服务端:
#include<WinSock2.h> #include<stdio.h> //加载静态lib文件或者加载动态dll文件 #pragma comment(lib,"ws2_32.lib") void main() { //加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0) { return; } if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } //创建套接字 SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //绑定套接字 bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100]; char sendBuf[100]; char tempBuf[200]; SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while(1) { //等待并接收数据 recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR *)&addrClient,&len); if('q'==recvBuf[0]) { sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len); printf("Chat end!\n"); break; } sprintf(tempBuf,"%s say %s",inet_ntoa(addrClient.sin_addr),recvBuf); printf("%s\n",tempBuf); //发送数据 printf("Please input data:\n"); gets(sendBuf); sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len); } //关闭套接字 closesocket(sockSrv); WSACleanup(); }
#include<WinSock2.h> #include<stdio.h> //加载静态lib文件或者加载动态dll文件 #pragma comment(lib,"ws2_32.lib") void main() { //加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0) { return; } if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } //创建套接字 SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); char recvBuf[100]; char sendBuf[100]; char tempBuf[200]; int len=sizeof(SOCKADDR); while(1) { //发送数据 printf("Please input data:\n"); gets(sendBuf); sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len); //等待并接收数据 recvfrom(sockClient,recvBuf,100,0,(SOCKADDR *)&addrSrv,&len); if('q'==recvBuf[0]) { sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len); printf("Chat end!\n"); break; } sprintf(tempBuf,"%s say %s",inet_ntoa(addrSrv.sin_addr),recvBuf); printf("%s\n",tempBuf); } //关闭套接字 closesocket(sockClient); WSACleanup(); }