一.前言
学计算机迟早会接触到通信。
而简单可用的代码来入门很重要。
但网上以及书本上给的的版本可能都不太易用。
本文主要涉及简单的客户端与服务端可用编码,旨在于注释中讲道理。(直接粘代码到VS里看吧)
二.引入
如果大家之前一点都没接触到网络通信的话,那么这里给大家介绍一下Socket:一个用于通信的接口。
c++简单的通信用它行,不用考虑什么其他的库优劣性,可以说是很省心了。
想要了解更多的话,本文不提供。你去搜《计算机网络》,你值得拥有。
三.开门见山铺代码
一点点引导:
通信肯定要大于等于两个个体才能通信。
在这里我们简单的分成了:服务器端 客户端
以下代码使用TCP的方法实现的,关于TCP其他文章有很多讲述,这里就不一一论述了。
服务端代码:
/*服务端
**SocketService.cpp
**2018/12/28
**Author:零医一零
**注:由于注重解释学习,所以请忽略该代码的格式
*/
#include<WINSOCK2.h>//windows socket的头文件 系统自带
#include<iostream>//这个都不知道我也没办法
using namespace std;//这句话我也很无奈啊
#pragma comment(lib,"ws2_32.lib")//用网络API函数的时候,就要用这条语句加载ws2_32.lib库(或者你自己去动态载入ws2_32.dll)
int main()
{
WSADATA wsaData;//用来存储被 WSAStartup 函数调用后返回的数据
WSAStartup(0x0202, &wsaData);
/*
必要性:WSAStartup必须是Windows Sockets中第一个使用的函数,成功调用后才能进一步使用Windows Sockets API函数
作用:指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节
用法:前参是一个WORD(双字节)型数值,指定了应用程序需要使用的Winsock规范的最高版本。
后参是WSADATA数据结构的指针,用来接收Windows Sockets实现的细节。
*/
//1.套接字(SOCKET神奇的翻译)的创建和关闭
SOCKET listenSocket; //定义套接字
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建套接字
/*
作用:创建套接字时返回小整数作为描述符来标识它
用法:AF表示ADDRESS FAMILY 地址族,SOCK_STREAM表示能保证数据正确传送到对方的SOCKET,IPPROTO_TCP表示TCP协议
补充:当不使用socket创建的套接字时,应该调用closesocket函数将它关闭(int closesocket(SOCKET s); )
*/
//2.绑定套接字到指定的IP地址和端口号
SOCKADDR_IN local;
//用于建立listenSocket的本地关联sockaddr_in结构
local