服务端
#include#include #include #pragma comment(lib,"Ws2_32.lib") int main() { //加载套接字 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return -1; } //创建套接字 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]; char str[INET_ADDRSTRLEN]; 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("结束"); break; } sprintf_s(tempBuf, 200, "%s say:%s", inet_ntop(AF_INET, &addrClient.sin_addr, str, sizeof(str)), recvBuf); printf("%sn", tempBuf); //发送数据 printf("请输入数据:n"); gets_s(sendBuf); sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len); } //关闭套接字 closesocket(sockSrv); WSACleanup(); return 1; }
客户端
#include#include #pragma comment(lib,"Ws2_32.lib") #include int main() { //加载套接字 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1, 1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return -1; } //创建套接字 SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0); SOCKADDR_IN addrSrv; inet_pton(AF_INET, "127.0.0.1", &addrSrv.sin_addr); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); char recvBuf[100]; char sendBuf[100]; char tempBuf[200]; char str[INET_ADDRSTRLEN]; int len = sizeof(SOCKADDR); while (1) { //发送数据 printf("请输入数据:n"); gets_s(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_s("结束"); break; } sprintf_s(tempBuf,200,"%s say:%s",inet_ntop(AF_INET,&addrSrv.sin_addr,str,sizeof(str)),recvBuf); printf("%sn",tempBuf); } //关闭套接字 closesocket(sockClient); WSACleanup(); return 1; }



