域套接字代碼示例(1)

使用socketpair能夠在有親緣關係的進程間(如父子進程)使用域套接字進行通訊。ios

#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;
}
相關文章
相關標籤/搜索