UDP的服務(wù)器端:(UdpSrv.cpp) #include "Winsock2.h" #include "stdio.h" #pragma comment(lib,"wsock32.lib")//導(dǎo)入lib
void main() { //初始化socket庫 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(4000) ; bind( sockSrv , (SOCKADDR*)&addrSrv , sizeof(SOCKADDR) ) ;
char sendBuf[100] ; char recvBuf[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() ; } UDP的客戶端:(UdpClient.cpp) #include "Winsock2.h" #include "stdio.h" #pragma comment(lib,"wsock32.lib")//導(dǎo)入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(4000) ; char sendBuf[100] ; char recvBuf[100] ; char tempBuf[200] ; int len = sizeof(SOCKADDR) ; while (1) { printf("Please input data:\n"); gets( sendBuf ) ; sendto( sockClient , sendBuf , strlen(sendBuf) , 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!") ; break ; } sprintf( tempBuf , "%s say: %s\n" , inet_ntoa(addrSrv.sin_addr) , recvBuf ) ; printf( tempBuf ) ; } closesocket(sockClient) ; WSACleanup() ; } |