server端: // Server.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Winsock2.h> #pragma comment(lib,"ws2_32.lib") #define PORT_NUMBER 11234 #define MAX_BUF_SIZE 1024 int _tmain(int argc, _TCHAR* argv[]) { WSADATA wSaData; WORD dwSockVersion = MAKEWORD(2,2); if (0 != WSAStartup(dwSockVersion,&wSaData)) //协商版本号 { printf("Arrange Version Failure"); return -1; } SOCKET nSocket; nSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //创建UDP socket if (INVALID_SOCKET == nSocket) { printf("invalid socket"); WSACleanup(); return -1; } sockaddr_in sa; int len = sizeof(sa); sa.sin_family = AF_INET; sa.sin_addr.s_addr = inet_addr("127.0.0.1"); sa.sin_port = htons(PORT_NUMBER);//选择一个端口号 if (0 != bind(nSocket,(sockaddr *)&sa,sizeof(sa))) { closesocket(nSocket); //绑定不成功 return -1; } while(TRUE) { char tmp[MAX_BUF_SIZE] = {0}; char buf[MAX_BUF_SIZE] = {0}; strcpy(tmp," hello client! this is server"); int nRecv = recvfrom(nSocket,buf,sizeof(buf),0,(struct sockaddr*)&sa,&len); if (nRecv > 0) { printf("%s/n",buf); int nSend = sendto(nSocket,tmp,(int)strlen(tmp),0,(struct sockaddr*)&sa,sizeof(sa)); closesocket(nSocket); break; } } return 0; } Client端: // Client.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Winsock2.h> #pragma comment(lib,"ws2_32.lib") #define MAX_BUF_SIZE 1024 #define PORT_NUMBER 11234 int _tmain(int argc, _TCHAR* argv[]) { WSADATA wSaData; WORD dwSockVersion = MAKEWORD(2,2); if (0 != WSAStartup(dwSockVersion,&wSaData)) //协商版本号 { printf("Arrange Version Failure"); return -1; } SOCKET nSocket; nSocket = socket(AF_INET, SOCK_DGRAM, 0); //创建UDP socket if (INVALID_SOCKET == nSocket) { printf("invalid socket"); WSACleanup(); return -1; } sockaddr_in sa; int len = sizeof(sa); sa.sin_family = AF_INET; sa.sin_addr.s_addr = inet_addr("127.0.0.1"); sa.sin_port = htons(PORT_NUMBER); char buf[MAX_BUF_SIZE] = {0}; char tmp[MAX_BUF_SIZE] = {0}; strcpy(tmp,"hello Server! this is Client!"); while(TRUE) { int nSend = sendto(nSocket,tmp,(int)strlen(tmp),0,(struct sockaddr*)&sa,sizeof(sa)); int nRecv = recvfrom(nSocket,buf,sizeof(buf),0,(struct sockaddr*)&sa,&len); if (nRecv > 0) { printf("%s/n",buf); break; } } closesocket(nSocket); WSACleanup(); return 0; } vs2005 编译调试成功,作为学习之用 2010-08-13 15:19:32