TCP协议前提
1.在windows下初始化socket库
WSAStartUp(
WORD wVersionRequested, //库的要求
LPWSADATA lpWSAData //库的各种参数
) //初始化库的API
2. DLL:WS2_32.DLL
LIB:WS2_32.LIB
3.包含头文件 winsock2.h
4.加载动态库 #pragma comment(lib,"ws2_32.lib")
1.服务器 //先接收后发送
1)创建Socket
SOCKET sockSver = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); //基于IP,TCP协议。
2)绑定端口和IP
sockaddr_in svraddr = {0};
svraddr.sin_family = AF_INET; //基于IP协议族
svraddr.sin_port = htons(5531); //端口
svraddr.sin_addr.S_un.S_addr = htons(INADDR_ANY);
bind(socsver,(struct sockaddr *)&svraddr,sizeof(svraddr));
3)侦听
listen(socsver,SOMAXCONN); //最大数量级
4)等待客户端,与客户端连接
struct sockaddr_in clientadrr = {0};
int nLen = sizeof(clientadrr);
SOCKET sockclient = accept //连接,阻塞函数,等待客户端的连接,连接成功就返回一个套接字
(
socsver,
(struct sockaddr*)&clientadrr,
&nLen
);
5)接收
struct sockaddr_in clientadrr = {0};
int nLen = sizeof(clientadrr);
SOCKET sockclient = accept //连接,阻塞函数,等待客户端的连接,连接成功就返回一个套接字
(
socsver,
(struct sockaddr*)&clientadrr,
&nLen
);
5)数据收发
char Szrecv[256] = "你好我是服务器";
send(sockclient,Szrecv,sizeof(Szrecv),0);
6)关闭socket
closesocket(sockclient);
closesocket(socsver);
2. 客户端 //先发送后接受
1)创建socket
SOCKET sockclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
2)连接服务器
struct sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_port = htons(5531);
addr.sin_addr.S_un.S_addr = inet_addr("115.150.231.20");
connect(sockclient, (struct sockaddr*)&addr, sizeof(addr));
3)数据收发
//数据收发
//发送数据
char szSend[256] = "我是客户端1";
send(socklient, szSend,sizeof(szSend),0);
//接受数据
char Szrev[256] = {0};
recv(socklient,Szrev,sizeof(Szrev),0);
cout << Szrev << endl;
4)关闭套接字
closesocket(socklient);
//写的很烂,只是为了给自己留个笔记。仅供随便看看