www.pudn.com > udp.rar > udpSrv.cpp
#include#include "Winsock2.h" #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); //Init Srv SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //Binding bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100];//recv Buffere char sendBuf[100];//send Buffere char tempBuf[200];//temp Buffere SOCKADDR_IN addrClient;//客户端地址信息 int len=sizeof(SOCKADDR); printf("***********************************\n"); printf("Welcome Using This Program!\n"); printf("Note:\nYou Must Wating For Other Person\nResend Data After You Sent Data!\n"); printf("You Can Sent 'q' To End This Program!\n"); printf("***********************************\n"); 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("Disconnection!\nEnd Chat!\n"); break; } sprintf(tempBuf,"%s say: %s",inet_ntoa(addrClient.sin_addr),recvBuf); printf("%s\n",tempBuf); printf("please input data:\n"); gets(sendBuf);//从键盘获取一行数据到sendBuf中 sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0, (SOCKADDR*)&addrClient,len); } closesocket(sockSrv); WSACleanup(); }