千家信息网

高级I/O-----socketpair

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,socketpairsocketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:假设现在我们是在本地使用socketpair
千家信息网最后更新 2026年11月01日高级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 #include  2 #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安全错误 数据库的锁怎样保障安全 互联网科技公司起名 互联网科技产业 科技金融是不是互联网金融 互联网科技公司的优势 科技信息互联网 奇酷互联网络科技 无线互联网科技 互联网科技视频素材 人人互联网科技是培训 联恩商钥互联网科技有限公司 顺网科技2021年互联网排名 互联网科技有哪些公司 浙江互联网科技研学营 国大互联网教育科技有限公司工作 996高科技互联网公司 每天都有哪些好的互联网科技 中天科技中国工业互联网 神州科技互联网有限公司 保山互联网科技靠谱吗 互联网科技企业文化 互联网科技工作委员会主任 顺网科技2021年互联网排名 中国科技互联网公司收入 民营互联网公司国防科技 中天科技中国工业互联网 互联网科技包装股份有限公司上市 2021世界互联网领先科技成果发布 神州科技互联网有限公司 上海万顺科技互联网有限公司招聘 美国五大互联网科技公司市值多少
0