溫馨提示×

C語言socketpair的使用方法是什么

小億
93
2024-03-05 21:44:00
欄目: 編程語言

在C語言中,可以使用socketpair函數來創(chuàng)建一對相互連接的套接字。這對套接字可以用于在同一進程內進行通信。下面是socketpair函數的使用方法:

#include <sys/socket.h>

int socketpair(int domain, int type, int protocol, int sv[2]);
  • domain:指定協議族(AF_UNIX或AF_INET等)。
  • type:指定套接字類型(SOCK_STREAM或SOCK_DGRAM等)。
  • protocol:指定協議類型(通常為0)。
  • sv:一個整型數組,用來存放創(chuàng)建好的一對套接字的文件描述符。

調用socketpair函數后,會創(chuàng)建兩個互相連接的套接字,它們之間可以用于進程內通信。sv數組的第一個元素存放了第一個套接字的文件描述符,第二個元素存放了第二個套接字的文件描述符。

下面是一個簡單的示例程序,演示了socketpair函數的使用:

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>

int main() {
    int sv[2];
    if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) < 0) {
        perror("socketpair");
        return 1;
    }

    char buf[256];
    if (fork() == 0) {
        close(sv[1]); // 關閉父進程的套接字
        read(sv[0], buf, sizeof(buf));
        printf("Child received message: %s\n", buf);
        close(sv[0]);
    } else {
        close(sv[0]); // 關閉子進程的套接字
        write(sv[1], "Hello from parent", 18);
        close(sv[1]);
    }

    return 0;
}

在上面的示例中,首先調用socketpair函數創(chuàng)建了一對套接字。然后通過fork函數創(chuàng)建了一個子進程,并在父子進程之間進行了通信。父進程向子進程發(fā)送了一條消息,子進程接收到消息后打印出來。最后關閉了所有的套接字文件描述符。

0