高级I/O-----socketpair
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,socketpairsocketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:假设现在我们是在本地使用socketpair
千家信息网最后更新 2025年12月03日高级I/O-----socketpair
socketpair
socketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:
假设现在我们是在本地使用socketpair的,客户端为fd[0],服务器端为fd[1],当服务器向客户端写数据时,从fd[1]的写端写入数据,而从fd[1]的读端读取数据,反之从客户端上的操作也是如此。
下面是实现的一个socketpair版本地进程间通信
#include/* See NOTES */ #include int socketpair(int domain, int type, int protocol, int sv[2]);
domian为操作的方式,因为我们是本地所以用AF_LOCAL。
type为传输方式,我们采用tcp的流式服务,SOCK_STREAM。
protocol为控制,我们选择默认填0,
sv为要创建多少个文件描述符,注意(这个文件描述符是网络文件描述符,可以说他是虚拟的)。
1 #include2 #include 3 #include 4 #include 5 #include 6 int main() 7 { 8 int fd[2]; 9 if(socketpair(AF_LOCAL,SOCK_STREAM,0,fd)<0) 10 { 11 perror("socketpair"); 12 } 13 char buf[1024]; 14 pid_t id=fork(); 15 if(id<0){ 16 perror("fork"); 17 }else if(id==0){ 18 close(fd[0]); 19 while(1) 20 { 21 sleep(1); 22 memset(buf,'\0',sizeof(buf)-1); 23 strcpy(buf,"child hello world"); 24 write(fd[1],buf,strlen(buf)+1); 25 ssize_t size=read(fd[1],buf,sizeof(buf)-1); 26 if(size>0) 27 { 28 buf[size]='\0'; 29 printf("parents say::%s\n",buf); 30 } 31 } 32 close(fd[1]); 33 } 34 else{ 35 close(fd[1]); 36 while(1) 37 { 38 sleep(2); 39 ssize_t size=read(fd[0],buf,sizeof(buf)-1); 40 if(size>0) 41 { 42 buf[size]='\0'; 43 printf("child say::%s\n",buf); 44 } 45 memset(buf,'\0',sizeof(buf)); 46 strcpy(buf,"parent hello world"); 47 write(fd[0],buf,strlen(buf)+1); 48 } 49 close(fd[0]); 50 51 } 52 53 return 0; 54 }
socketpair实现了全双工的通信方式。
方式
客户
客户端
数据
文件
服务
通信
服务器
双工
一端
是在
版本
管道
网络
进程
传输
控制
选择
高级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
宝山区正规软件开发诚信合作
网络技术应用是哪一年开始的
apache服务器压测工具
国家鼓励和开发网络安全保护
杭州商城软件开发价钱是多少
如何查看当前应用使用的数据库
网络安全行业动态
域控服务器如何停用账号
剑灵角色服务器
余姚市网络安全
kk服务器信息和端口号
水利网络安全三套机制
网络安全保卫支队民警升旗
智能建筑网络安全问题
网络安全等级保护线上会议
北京现代软件开发收费
设置达蒙数据库字符编码集
软件开发的错误叫什么
体验云服务器
个人游戏服务器cpu选什么
网络安全第一道防线
我的世界服务器配置命令
万网虚拟主机建数据库
在线教学系统的数据库设计
查看服务器是否被挖矿命令
网络安全保卫支队民警升旗
并行数据库有几个os控制
锐龙cpu做软件开发
中华人民网络安全法案
西安互联网公司宇世科技怎么样