使用socketpair可以在有亲缘关系的进程间(如父子进程)使用域套接字进行通信。

#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>
#include <iostream>

using namespace std;

int main()
{
    int sockfd[2];
    if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sockfd) < 0)
    {
        cout << "fail to create socket pair" << endl;
        return -1;
    }

    int iRet = fork();
    if (iRet < 0)
    {
        cout << "fail to fork child" << endl;
        return -1;
    }
    else if (iRet > 0)
    {
        // parent
        close(sockfd[1]);
        char acSend[] = "how are you";
        write(sockfd[0], acSend, strlen(acSend));
        char acRecv[20] = { 0 };
        read(sockfd[0], acRecv, sizeof(acRecv));
        cout << "parent recv: " << acRecv << endl;
    }
    else
    {
        // child
        close(sockfd[0]);
        char acRecv[20] = { 0 };
        read(sockfd[1], acRecv, sizeof(acRecv));
        cout << "child recv: " << acRecv << endl;
        char acSend[] = "fine, thank you";
        write(sockfd[1], acSend, strlen(acSend));
    }
    
    return 0;
}

 

相关文章:

  • 2021-11-05
  • 2022-12-23
  • 2021-06-11
  • 2021-04-17
  • 2021-11-04
  • 2021-07-25
  • 2022-12-23
猜你喜欢
  • 2021-08-26
  • 2021-10-04
  • 2021-07-15
  • 2021-10-12
  • 2022-12-23
  • 2021-09-24
  • 2022-01-24
相关资源
相似解决方案