socketpair 进程间全双工通信

原创 2016年06月01日 14:01:01
include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <iostream>
using namespace std;
void err_sys(const char *errmsg);
class Person
{
  public:
   void say(string str )
   {
     int n;
     printf("%s say %s\n",name_.c_str(),str.c_str());
     if((n = write(say_sock_, str.c_str(), str.size() ))<0)
     {
        err_sys("write error!\n");
     }
   }
   string hear()
   {
     int n;
     string res;
     char s[1024];
     if ((n = read(hear_sock_,s , sizeof(s))) >0)
     {
        s[n]=0;
        res += s;
     }
     printf("%s hear %s\n",name_.c_str(),res.c_str());
     return res;
   }
   int say_sock_;
   int hear_sock_;
   Person()
   {
     say_sock_ = -1;
hear_sock_ = -1;
   }
   string name_;
};
int main(void)
{
        int sockfd1[2];
        pid_t pid;
        Person p1,p2;
        p1.name_="p1";
        p2.name_ = "p2";
        if ((socketpair(AF_LOCAL, SOCK_STREAM, 0, sockfd1))<0)
                err_sys("socketpair");
        if ((pid = fork()) == -1)
                err_sys("fork");
        else if (pid == 0)
        { /* child process */
                        p1.say_sock_ = sockfd1[0];
                        p1.hear_sock_ = sockfd1[0];

                        p1.say("hello world");
                        p1.hear();
                        p1.say("chile");
                        sleep(1);
        }
        else if (pid > 0)
        { /* parent process */
                        p2.hear_sock_ = sockfd1[1];
                        p2.say_sock_ = sockfd1[1];
                        p2.say("chifanlema ?");
                        p2.hear();
                        sleep(1);
        }
        return 0;
}
void err_sys(const char *errmsg)
{
        perror(errmsg);
        exit(1);
}
     

socketpair创建双向通信的管道(全双工通信)

socketpair创建双向通信的管道(全双工通信)

Linux下用管道实现进程全双工通信的代码

直接看代码, 里面已经有注释了。   主程序: int main() { char buf[256]; int fdin[2]; int fdout[2]; int p...

套接字(全双工)实现进程间通信

特点: sv【0】和sv【1】可读可写。每个进程固定用一个接口。 写数据时:通道不满不阻塞; 读数据时:通道里没数据时阻塞。可用fcntl设置为非阻塞。 创建: int socketpair...

由进程间通讯引发的对半双工和全双工的思考

使用方法才是确定管道是全双工还是半双工的真正定义来源.而并不单单是一个特性....

java实现全双工串口通信

  • 2012年12月04日 18:30
  • 3.46MB
  • 下载

TCP全双工通信

  • 2017年07月06日 14:22
  • 27KB
  • 下载

让C/S进行全双工通信的WebSocket协议

超文本传输协议(HTTP)作为一种简单的协议,在面对功能日益丰富的 Web应用时,遇到了如下瓶颈:1、在客户端请求时,会建立一个TCP连接,然后发送请求,服务端给出响应,然后连接就关闭了。(现在的HT...
  • STFPHP
  • STFPHP
  • 2016年10月28日 01:52
  • 1223

zeroc-ice的全双工通信策略

zeroc-ice全双工异步通信
  • py8105
  • py8105
  • 2017年07月02日 14:07
  • 109

全双工实现服务器与客户端的通信

/* * 服务器端 */ package TestServer; import javax.swing.*; import java.awt.*; import java.io.*; impor...

Java学习笔记-----Socket全双工通信

::::::::::::::: 全双工通信。 /* 服务器端 如何让它滚动??? 做一个JScorllPane  ??? */ import javax....
  • H002399
  • H002399
  • 2015年08月07日 21:11
  • 721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:socketpair 进程间全双工通信
举报原因:
原因补充:

(最多只允许输入30个字)