1.新建一个工程区Net
在工作区中添加两个工程 NetSrv 和 NetClient
为两个工程添加库文件 (Link中) ws2_32.lib
2.在工程NetSrv中添加Server.cpp文件
代码如下:
06 | WORD wVersionRequested; |
10 | wVersionRequested = MAKEWORD( 2, 2 ); |
12 | err = WSAStartup( wVersionRequested, &wsaData ); |
18 | if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) |
24 | SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0); |
26 | addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); |
27 | addrSrv.sin_family = AF_INET; |
28 | addrSrv.sin_port = htons(6000); |
30 | bind(sockSrv,(SOCKADDR*)&addrSrv, sizeof (SOCKADDR)); |
36 | SOCKADDR_IN addrClient; |
37 | int len = sizeof (SOCKADDR); |
41 | recvfrom(sockSrv , recvBuf, 100, 0, (SOCKADDR*)&addrClient,&len); |
44 | sendto(sockSrv, "q" , strlen ( "q" )+1, 0 , (SOCKADDR*)&addrClient,len); |
45 | printf ( "Chat end!\n" ); |
48 | sprintf (tempBuf, "%s say : %s" ,inet_ntoa(addrClient.sin_addr),recvBuf); |
49 | printf ( "%s\n" ,tempBuf); |
50 | printf ( "Please input data:\n" ); |
52 | sendto(sockSrv,sendBuf, strlen (sendBuf)+1,0,(SOCKADDR*)&addrClient,len); |
3.在工程NetClient中添加Client.cpp文件 代码如下:
06 | WORD wVersionRequested; |
10 | wVersionRequested = MAKEWORD( 2, 2 ); |
12 | err = WSAStartup( wVersionRequested, &wsaData ); |
18 | if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ) |
24 | SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); |
27 | addrSrv.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" ); |
28 | addrSrv.sin_family=AF_INET; |
29 | addrSrv.sin_port = htons(6000); |
35 | int len = sizeof (SOCKADDR); |
39 | printf ( "Please input data:\n" ); |
41 | sendto(sockClient,sendBuf, strlen (sendBuf)+1,0,(SOCKADDR*)&addrSrv,len); |
42 | recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len); |
45 | sendto(sockClient, "q" , strlen ( "q" )+1,0,(SOCKADDR*)&addrSrv,len); |
46 | printf ( "Chat end!\n" ); |
49 | sprintf (tempBuf, "%s say : %s" ,inet_ntoa(addrSrv.sin_addr),recvBuf); |
50 | printf ( "%s\n" ,tempBuf); |
52 | closesocket(sockClient); |
4.先运行服务端程序,再运行客户端程序