高级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安全错误
数据库的锁怎样保障安全
网络怎么开通服务器
北航网络安全期末考题
数据库放阿里云安全吗
定义数据库外模式
网络安全支队专业技能测试
武汉虹信软件开发招聘
数据库安全百度经验
不同数据库的特色
网络安全感满意度调查问题
网络安全周在内容和形式上
梦幻西游新手服务器转区携带宝石
网络技术建设新时代背景
珠海软件开发价格
论文数据库设计应该怎么写
学习软件开发的感悟
河南工业软件开发价位
上海专业网络技术哪家好
数据库 半同步
汽修app软件开发
无锡运营软件开发供应商
互联网法院用科技打通了现实
联通网打电信服务器
家庭网络安全怎么解决
双防护服务器
湖南服务器虚拟化迁移服务器
网络安全保护产品
创建数据库中的表基本语法
贵州的服务器
计算型服务器和存储型服务器
免费服务器代理在线