[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 }
复制代码

 

目录
打赏
0
0
0
0
23
分享
相关文章
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
61 16
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
113 0
Linux C/C++之TCP / UDP通信
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
85 6
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
245 1
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
334 0
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
C语言 网络编程(七)UDP通信创建流程
本文档详细介绍了使用 UDP 协议进行通信的过程,包括创建套接字、发送与接收消息等关键步骤。首先,通过 `socket()` 函数创建套接字,并设置相应的参数。接着,使用 `sendto()` 函数向指定地址发送数据。为了绑定地址,需要调用 `bind()` 函数。接收端则通过 `recvfrom()` 函数接收数据并获取发送方的地址信息。文档还提供了完整的代码示例,展示了如何实现 UDP 的发送端和服务端功能。
网络编程进阶:UDP通信
网络编程进阶:UDP通信
343 0