今天我们继续就网络编程进行深入的探讨,我们知道TCP/IP协议是面向连接的socket编程,也就是通信是基于连接,必须先建立连接,我们才可以进行通信。具体流程如下:
服务器端流程:
1 #include<Winsock2.h> 2 #include<stdio.h> 3 4 void main() 5 { 6 //load socket libariy 7 WORD wVersionRequested; 8 //this struct use to stored Windows Sockets value after call WSAStartup() function, 9 //include the data from Winscok.dll 10 WSADATA wsaData; 11 int err; 12 wVersionRequested=MAKEWORD(1,1); 13 err = WSAStartup(wVersionRequested,&wsaData); 14 if(err!=0) 15 { 16 return; 17 } 18 if(LOBYTE(wsaData.wVersion)!=1 || (HIBYTE(wsaData.wVersion)!=1)) 19 { 20 WSACleanup(); 21 return; 22 } 23 //socket listen 24 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); 25 //server address information 26 SOCKADDR_IN addrSrv; 27 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//Default IP address 28 addrSrv.sin_family=AF_INET; 29 addrSrv.sin_port=htons(6000); //nPort 30 //bind socket 31 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); 32 //listen 33 listen(sockSrv,5); 34 35 //client address information 36 SOCKADDR_IN addrClient; 37 int len=sizeof(SOCKADDR); 38 while(1) 39 { 40 //wait for client connect request 41 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); 42 char sendBuf[100]; 43 //printf client‘s address information 44 printf(sendBuf,"Welcome %s to server.",inet_ntoa(addrClient.sin_addr)); 45 //send message 46 send(sockConn,sendBuf,strlen(sendBuf)+1,0); 47 //receive message from client 48 char recvBuf[100]; 49 recv(sockConn,recvBuf,100,0); 50 printf("%s\n",recvBuf); 51 //close socket 52 closesocket(sockConn); 53 } 54 }
客户端流程:
原文:https://www.cnblogs.com/lumao1122-Milolu/p/11776806.html