高级I/O-----socketpair
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,socketpairsocketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:假设现在我们是在本地使用socketpair
千家信息网最后更新 2024年11月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安全错误
数据库的锁怎样保障安全
数据库程序设计二级考什么
网络安全什么证书最牛
通过服务器打包vue项目
民宗局网络安全事件应急预案
网络安全外包服务公司简介
服务器 2背板 4背板
删除数据库的命令格式是
徐州网络技术开发计划
软件开发需求的状态
数据库设计的意义
初中生能学软件开发工程师吗
yii 数据库操作
网络安全风险包括什么
服务器系统获取管理员权限
长春市网络安全服务机构
咸宁订制软件开发
php迷你服务器
软件开发文科可以学吗
指定服务器不可访问怎么解决
mysql数据库布尔类型
小学生网络安全应急预案
通过服务器打包vue项目
服务器跑电脑上的数据
大百上街网络技术有限公司
对面不投是在等待服务器吗
眉山网络安全局
徐汇区正规软件开发有哪些
服务器怎么更改网络设置
北京交警老显示内部服务器错误
小学 网络安全为人民活动