资源描述:
《简单UDPsocket编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、服务器端//ntUdpServer.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include"winsock2.h"//winsock2.2library#pragmacomment(lib,"ws2_32.lib")#definePORT8888#defineADDR"127.0.0.1"intmain(intargc,char*argv[]){WSADATAwsock;SOCKETsersocket;SOCKADDR_INserAddr;ints
2、erAddrsize=sizeof(serAddr);intnRet=0;charbuf[1024];//intPORT;//char*ADDR;//PORT=atoi(argv[2]);//ADDR=argv[1];//初始化Winsock2.2printf("InitialisingWinsock...");if(WSAStartup(MAKEWORD(2,2),&wsock)!=0){printf("WSAStartup()failed%d",WSAGetLastError());exit(0);}printf("Initialisedsuccessfully.
3、n");//创建socketprintf("CreatingUDPSocket...");if((sersocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==INVALID_SOCKET){printf("Creationofsocketfailed%d",WSAGetLastError());WSACleanup();return0;}printf("UDPSocketCreatedsuccessfully.");//设置SOCKADDR_IN地址结构serAddr.sin_family=AF_INET;serAddr.s
4、in_port=htons(PORT);//serAddr.sin_addr.s_addr=INADDR_ANY;serAddr.sin_addr.s_addr=inet_addr(ADDR);//绑定套接字if(bind(sersocket,(SOCKADDR*)&serAddr,sizeof(serAddr))==SOCKET_ERROR){printf("bindfailedwitherror%d",WSAGetLastError());closesocket(sersocket);WSACleanup();return0;}printf("Waitingtoreceiv
5、edata...");for(inti=0;;i++){if((nRet=recvfrom(sersocket,buf,sizeof(buf),0,(SOCKADDR*)&serAddr,&serAddrsize))==SOCKET_ERROR){printf("ERROR:recvfromfailedwitherror%d",WSAGetLastError());closesocket(sersocket);WSACleanup();return0;}printf("Thedatawasreceivedfrom%s:%d",inet_ntoa(serAddr.sin_
6、addr),ntohs(serAddr.sin_port));//显示接收到的数据printf(buf);printf("");if((nRet=sendto(sersocket,buf,strlen(buf),0,(SOCKADDR*)&serAddr,sizeof(serAddr)))==SOCKET_ERROR){printf("ERROR:sendtofailedwitherror%d",WSAGetLastError());closesocket(sersocket);WSACleanup();return0;}//若发现exit则退出处理循环if(strncmp
7、(buf,"exit",sizeof("exit"))==0){printf("exitthereceivingloop");break;}}//关闭套接字closesocket(sersocket);WSACleanup();return0;}客户端//ntUdpClient.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#includ