基于UDP协议的进程间通信
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,UDP协议的主要特点:UDP是无连接的UDP使用尽最大努力交付UDP是面向报文的没有拥塞控制支持一对一、一对多、多对一、多对多的交互通信UDP首部开销小UDP协议是无连接的并且面向数据块的。所以cli
千家信息网最后更新 2025年01月20日基于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安全错误
数据库的锁怎样保障安全
淘宝服务器有风险吗
山东大学网络安全学院考研
南宁电脑软件开发公司
高端服务器游戏
电商软件开发大概多少钱
免安装 数据库
福建质量网络技术咨询常见问题
gopher代理服务器
好的服务器租用
网络技术专业的了解
洋河新区网络安全
NDS服务器的作用
软件开发测试时间占比
视频保存用什么服务器
数据库事务自动和手动提交
kbc 数据库配置
网络安全宣传周图片2021
网络安全法哪一年
网络安全国外厂商 工控
仲恺网络安全宣传
质检数据库
世界互联网科技的发源地
1000u打印服务器如何设置
汪涛无线网络技术导论01
康复软件开发介绍
管理软件开发实训教程
简阳哪里招聘网络技术员
华为网络安全认证书籍
华为云软件开发工具
上市公司数据库查询