我对socketpairs很陌生,我需要我的孩子们每个人都把信息从一个结构传递给父母。我被告知这可以用SOCK-DGRAM来完成,但我不知道怎么做。我浏览了互联网,但找不到一个具体的例子。你能给我举个例子吗?你能把一个由2个int和一个string组成的结构传给父母吗也许 吧?我只想要一个例子,这样我就可以理解如何构建这种socketpair并通过它发送信息。谢谢

最佳答案

以下几点怎么样:

int sockets[2];
if (socketpair(AF_INET, SOCK_DGRAM, 0, sockets) != -1)
{
    int res = fork();

    if (res == 0)
    {
        /* In child process */

        /* We only need one socket, so close the other */
        close(sockets[0]);

        struct some_structure my_struct;

        write(sockets[1], &my_struct, sizeof(my_struct));

        /* All done */
        exit(0);
    }
    else if (res > 0)
    {
        /* In parent process */

        /* We only need one socket, so close the other */
        close(sockets[1]);

        struct some_structure my_struct;

        read(sockets[0], &my_struct, sizeof(my_struct));
    }
}

上面的代码不会检查或处理错误。它不能处理包含指针的结构,但是使用数组的结构是可以的。

07-26 04:31