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 }

 

转载于:https://www.cnblogs.com/dacy/archive/2012/09/28/2707183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值