c++ UDP套接字服务器端代码示范
1 #include<winsock2.h> //包含头文件 2 #include<stdio.h> 3 #include<windows.h> 4 #pragma comment(lib,"WS2_32.lib") //连接套接字库 5 //txwtech 6 int main() 7 { 8 WSADATA data; //定义结构体变量 9 WORD w=MAKEWORD(2,0); //定义套接字版本 10 char sztext[]="欢迎你\r\n"; //定义欢迎信息 11 ::WSAStartup(w,&data); //初始化套接字库 12 SOCKET s; //定义套接字句柄 13 s=::socket(AF_INET, SOCK_DGRAM,0); //创建UDP套接字 14 sockaddr_in addr,addr2; //套接字地址结构变量 15 int n=sizeof(addr2); //地址结构变量大小 16 char buff[10]={0}; //接收数据缓冲区 17 addr.sin_family=AF_INET; 18 addr.sin_port=htons(75); 19 addr.sin_addr.S_un.S_addr=INADDR_ANY; 20 ::bind(s,(sockaddr*)&addr,sizeof(addr)); //绑定套接字 21 printf("UDP服务器已经启动\r\n"); //显示提示信息 22 23 while(1) 24 { 25 if(::recvfrom(s,buff,10,0,(sockaddr*)&addr2,&n)!=0) //接收客户端信息 26 { 27 printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr)); 28 printf("%s\r\n",buff); 29 ::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n);//发送数据到客户端 30 break; 31 } 32 } 33 ::closesocket(s); //关闭套接字对象 34 ::WSACleanup(); //释放套接字库 35 if(getchar()) //如果有输入,则关闭程序 36 { 37 return 0; //正常结束程序 38 } 39 else 40 { 41 ::Sleep(100); //应用程序睡眠 42 } 43 }