域套接字代码示例(1)

使用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;
}

 

posted @ 2015-12-27 17:38  Glacier  阅读(399)  评论(0编辑  收藏  举报