UDP_Server
1 #include <stdio.h> 2 #include <Winsock2.h> 3 #pragma comment(lib, "ws2_32.lib") 4 5 void main() 6 { 7 SOCKET socket1; 8 9 //InitWinsock(); 10 WSADATA wsaData; 11 int iErrorCode; 12 if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL 13 { 14 printf("Winsock无法初始化!\n"); 15 WSACleanup(); 16 return; 17 } 18 19 printf("服务器开始创建SOCKET。\n"); 20 struct sockaddr_in local; 21 struct sockaddr_in from; 22 int fromlen =sizeof(from); 23 local.sin_family=AF_INET; 24 local.sin_port=htons(27015); ///监听端口 25 local.sin_addr.s_addr=INADDR_ANY; ///本机 26 27 socket1=socket(AF_INET,SOCK_DGRAM,0); 28 bind(socket1,(struct sockaddr*)&local,sizeof(local));//将那个结构体绑定到当前的套接字绑定地址以及端口 29 while (1) 30 { 31 char buffer[1024]="\0"; 32 printf("waiting for message from others-------------\n"); 33 if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR) 34 { 35 printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer); 36 ////给cilent发信息 37 sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,fromlen); 38 39 } 40 //Sleep(1000); 41 } 42 closesocket(socket1); 43 }
UDP_Client
1 #include <stdio.h> 2 #include <Winsock2.h> 3 #pragma comment(lib,"ws2_32.lib") 4 void main() 5 { 6 SOCKET socket1; 7 //InitWinsock(); 8 WSADATA wsaData; 9 int iErrorCode; 10 if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL 11 { 12 printf("Winsock无法初始化!\n"); 13 WSACleanup(); 14 return; 15 } 16 17 printf("服务器开始创建SOCKET。\n"); 18 struct sockaddr_in server;//初始化server一个用于连接或者绑定的数据结构 19 int len =sizeof(server); 20 server.sin_family=AF_INET;//TCP的地址簇 21 server.sin_port=htons(27015); ///server的监听端口 22 server.sin_addr.s_addr=inet_addr("192.168.100.102"); ///server的地址 23 24 socket1=socket(AF_INET,SOCK_DGRAM,0);//数据报格式用于无连接的UDP传输 25 while (1) 26 { 27 char buffer[1024]="\0"; 28 printf("input message\n"); 29 scanf("%s",buffer); 30 // printf("%s",buffer); 31 if (strcmp(buffer,"bye")==0) 32 { 33 printf("退出!\n"); 34 Sleep(100); 35 closesocket(socket1); 36 break; 37 } 38 39 if (sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,len)!=SOCKET_ERROR) 40 { 41 //printf("sending..\n"); 42 Sleep(100); 43 if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,&len) != SOCKET_ERROR) 44 printf("rece from server:%s\n",buffer); 45 } 46 } 47 closesocket(socket1); 48 }