基于UDP协议的进程间通信
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,UDP协议的主要特点:UDP是无连接的UDP使用尽最大努力交付UDP是面向报文的没有拥塞控制支持一对一、一对多、多对一、多对多的交互通信UDP首部开销小UDP协议是无连接的并且面向数据块的。所以cli
千家信息网最后更新 2024年11月29日基于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安全错误
数据库的锁怎样保障安全
联软数据库审计
软件开发工作室门头
大学社团软件开发社怎么样
土地确权数据库研究
网络安全应急保障小组
网络安全黑客攻击方式
大型数据库技术大题
数据库新建表保存过怎么再保存
网络安全手抄报颜色丰富
数据库事物的特性不包括
drone部署到服务器
小手拉大手共筑网络安全
铁路网络技术员述职报告
深圳南湾区托管服务器
百度药品广告数据库
属于无线网络技术的是
濮阳软件开发公司招聘
音箱设计软件开发
地级市软件开发
网络安全竞赛培训计划
数据库怎么查询前三名
西安胡门网络技术经理
杭州健康码软件开发流程
国内免备案服务器
如何避免服务器攻击
软件开发资质还有么
网络安全工作三定方案
服务器集群虚拟化
服务器管理楼安装系统
阿里云服务器一年多少钱