UDP Socket编程示例

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 }

 

posted @ 2012-09-28 14:48  dacy  阅读(1579)  评论(0编辑  收藏  举报