UDP服务器
#include<winsock2.h> #include<stdio.h> #include<windows.h> #pragma comment(lib,"WS2_32.lib") int main() { WSADATA data; WORD w=MAKEWORD(2,0); char sztext[]="欢迎你\r\n"; ::WSAStartup(w,&data); SOCKET s; s=::socket(AF_INET,SOCK_DGRAM,0); sockaddr_in addr,addr2; int n=sizeof(addr2); char buff[11]={0}; addr.sin_family=AF_INET; addr.sin_port=htons(75); addr.sin_addr.S_un.S_addr=INADDR_ANY; ::bind(s,(sockaddr*)&addr,sizeof(addr)); printf("UDP服务器已经启动\r\n"); while(1) { if(::recvfrom(s,buff,11,0,(sockaddr*)&addr2,&n)!=0) { printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr)); printf("%s\r\n",buff); ::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n); break; } } ::closesocket(s); ::WSACleanup(); if(getchar()) //如果有输入则关闭程序 { return 0; //正常结束程序 } else {::Sleep(100); } }
UDP客户端
#include<winsock2.h> #include<stdio.h> #include<windows.h> #pragma comment(lib,"WS2_32.lib") int main() { WSADATA data; WORD w=MAKEWORD(2,0); char sztext[]="服务器,你好!\r\n"; ::WSAStartup(w,&data); SOCKET s; s=::socket(AF_INET,SOCK_DGRAM,0); sockaddr_in addr,addr2; int n=sizeof(addr2); char buff[10]={0}; addr.sin_family=AF_INET; addr.sin_port=htons(75); addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); printf("UDP客户端已经启动\r\n"); if(::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr,n)!=0) { ::recvfrom(s,buff,10,0,(sockaddr*)&addr2,&n); printf("服务器说:%s\r\n",buff); ::closesocket(s); ::WSACleanup(); } if(getchar()) //如果有输入则关闭程序 { return 0; //正常结束程序 } else {::Sleep(100); } }
基于UDP的Sockets编程,布布扣,bubuko.com
原文:http://www.cnblogs.com/lovemayday/p/3596289.html