基于UDP协议的进程间通信
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,UDP协议的主要特点:UDP是无连接的UDP使用尽最大努力交付UDP是面向报文的没有拥塞控制支持一对一、一对多、多对一、多对多的交互通信UDP首部开销小UDP协议是无连接的并且面向数据块的。所以cli
千家信息网最后更新 2025年12月02日基于UDP协议的进程间通信
UDP协议的主要特点:
UDP是无连接的
UDP使用尽最大努力交付
UDP是面向报文的
没有拥塞控制
支持一对一、一对多、多对一、多对多的交互通信
UDP首部开销小
UDP协议是无连接的并且面向数据块的。所以client端不需要与server端进行连接,直接发送消息。
server: 1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 void usage(char *port) 9 { 10 printf("%s,[ip],[port]\n",port); 11 } 12 int main(int argc,char *argv[]) 13 { 14 if(argc!=3) 15 { 16 usage(argv[0]); 17 exit(1); 18 } 19 int sock = socket(AF_INET,SOCK_DGRAM,0); //创建套接字 20 if(sock<0) 21 { 22 perror("socket"); 23 return 1; 24 } 25 int port = atoi(argv[2]); 26 char *ip = argv[1]; 27 struct sockaddr_in client; 28 client.sin_family = AF_INET; 29 client.sin_port = htons(port); 30 client.sin_addr.s_addr = inet_addr(ip); 31 if(bind(sock,(struct sockaddr*)&client,sizeof(client))<0) 32 { 33 perror("bind"); 34 exit(1); 35 } 36 char buf[1024]; 37 struct sockaddr_in remote; 38 socklen_t len = sizeof(remote); 39 while(1) 40 { 41 ssize_t size = recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr*)&re mote,&len); //接收消息 42 if(size>0) 43 { 44 buf[size-1]='\0'; 45 printf("%s,%d: %s\n",inet_ntoa(remote.sin_addr),ntohs(remote.sin _port),buf); 46 47 } 48 else if(size==0) 49 {} 50 else 51 { 52 perror("recvfrom"); 53 exit(2); 54 } 55 fflush(stdout); 56 } 57 return 0; 58 } client: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 void usage(char *port) 10 { 11 printf("%s,[ip],[port]\n",port); 12 } 13 int main(int argc,char *argv[]) 14 { 15 if(argc!=3) 16 { 17 usage(argv[0]); 18 exit(1); 19 } 20 int sock = socket(AF_INET,SOCK_DGRAM,0); 21 if(sock<0) 22 { 23 perror("socket"); 24 return 1; 25 } 26 int port = atoi(argv[2]); 27 char *ip = argv[1]; 28 struct sockaddr_in remote; 29 remote.sin_family = AF_INET; 30 remote.sin_port = htons(port); 31 remote.sin_addr.s_addr = inet_addr(ip); 32 char buf[1024]; 33 while(1) 34 { 35 memset(buf,'\0',sizeof(buf)); 36 ssize_t _s = read(0,buf,sizeof(buf)-1); 37 if(_s<0) 38 { 39 perror("read"); 40 exit(1); 41 } 42 ssize_t size = sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&remo te,sizeof(remote)); //发送消息 43 if(size<0) 44 { 45 perror("sendto"); 46 exit(1); 47 } 48 49 } 50 return 0; 51 } [fbl@localhost udp]$ ./server 192.168.1.106 8080192.168.1.106,33647: how are you192.168.1.106,33647: hi192.168.1.106,33647: hnxu^C[fbl@localhost udp]$ [fbl@localhost udp]$ ./client 192.168.1.106 8080how are youhihnxu^C[fbl@localhost udp]$
消息
通信
最大
一对一
套接字
开销
报文
数据
特点
控制
支持
进程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
i开头单词大数据库
上海打造智慧园区软件开发
java在数据库中插入信息
架设的手游怎么修改数据库
计算机网络安全沈鑫剡
网络安全合同印花税
cago一直显示服务器失败
情报威胁在网络安全中包括
电驴海外版服务器地址
构建无损网络技术
英雄联盟服务器崩溃过几次
华为服务器报r01
db2数据库的备份与恢复
加油服务器
芝杜数据库
面试题数据库如何优化
战术小队服务器管理
爱奇艺数据库怎么选择
我的世界多人交易服务器
阿里mysql数据库
观致连接不上服务器
乌海网络技术怎么样
中数科互联网科技深圳有限公司
32岁还建议学软件开发吗
软件开发培训学校在哪
服务器安全群
山东交互网络技术有限公司
杨浦服务器回收
软件开发综合实践
奥能网络技术开发