高级I/O-----socketpair
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,socketpairsocketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:假设现在我们是在本地使用socketpair
千家信息网最后更新 2025年01月20日高级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安全错误
数据库的锁怎样保障安全
我国科技界进入互联网
桂林团扇档案数据库
网络安全监测网址
公司网络安全的培训
服务器安全狗多少钱
黄山哪里学软件开发
rainbow数据库
数据库两个字段相减再查询
金华市网络安全知识答案
鄂尔多斯市教育网络安全预案
汽车数据库查不到的物品
打造网络安全宣传周
数据库1405
软件开发工程师过面试
用服务器玩国际服的游戏
长宁区企业网络技术服务答疑解惑
全国三级 网络技术
营口新新互联网科技有限公司
公司数据库开发软件
数据库如何锁定表头
医院登入的移动网络安全吗
网络安全口号简短
拍卖行数据库系统费用是什么意思
软件开发 tr
网络安全五大原则
外企软件开发公司待遇
以下不属于数据库系统开发的是
设置数据库密码不会过期
str 标准数据库
服务器一季度排行