[C++] socket - 2 [UDP通信C/S实例]

 

服务端:

复制代码
 1 #include<iostream>
 2 #include<winsock2.h>
 3 #include<stdio.h>
 4 #pragma comment(lib,"WS2_32.lib")//显示连接套接字库
 5 int main()
 6 {
 7     WSADATA data;//定义WSADATA结构体
 8     WORD w=MAKEWORD(2,0);//定义版本号
 9     char sztext[]="Welcome you\r\n";//定义并初始化发送到客户端的字符数组
10     ::WSAStartup(w,&data);//初始化套接字库
11     SOCKET s;
12     s=::socket(AF_INET,SOCK_DGRAM,0);
13     sockaddr_in addr,addr2;//定义套接字地址结构
14     int n=sizeof(addr2);
15     char buff[16]={0};//接收数据缓冲区
16     addr.sin_family=AF_INET;//初始化地质结构
17     addr.sin_port=htons(75);
18     addr.sin_addr.S_un.S_addr=INADDR_ANY;
19     ::bind(s,(sockaddr*)&addr,sizeof(addr));//绑定套接字
20     printf("UDP Server already start!\r\n");
21     if(::recvfrom(s,buff,16,0,(sockaddr*)&addr2,&n)!=-1)//接收客户端信息
22     {
23         printf("%s already connect\r\n",inet_ntoa(addr2.sin_addr));
24         ::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n);//向客户端发送字符数组
25         ::closesocket(s);//关闭套接字句柄
26         ::WSACleanup();//释放套接字库
27     }
28     if(getchar())
29     {
30         return 0;
31     }
32     else
33     {
34         ::Sleep(100);
35     }
36 }
复制代码

 

客户端:

复制代码
 1 #include<iostream>
 2 #include<winsock2.h>
 3 #include<stdio.h>
 4 #pragma comment(lib,"WS2_32.lib")//显示连接套接字库
 5 int main()
 6 {
 7     WSADATA data;//定义WSADATA结构体
 8     WORD w=MAKEWORD(2,0);//定义版本号
 9     ::WSAStartup(w,&data);//初始化套接字库
10     SOCKET s;
11     s=::socket(AF_INET,SOCK_DGRAM,0);//创建TCP套接字
12     sockaddr_in addr,addr2;
13     int n=sizeof(addr2);
14     char buff[16]="Wde";
15     char sztext[16]={0};
16     addr.sin_family=AF_INET;//初始化地质结构
17     addr.sin_port=htons(75);
18     addr.sin_addr.S_un.S_addr=inet_addr("10.203.117.150");
19     printf("UDP Clienct already start\r\n");
20     if(::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr,n)!=0)
21     {
22         ::recvfrom(s,buff,16,0,(sockaddr*)&addr2,&n);
23         printf("Server say:%s\r\n",buff);
24         ::closesocket(s);
25         ::WSACleanup();//释放套接字库
26     }
27     if(getchar())
28     {
29         return 0;
30     }
31     else
32     {
33         ::Sleep(100);
34     }
35 }
复制代码

 

 

posted @   beautifulzzzz  阅读(1943)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示