>  기사  >  소켓 쌍 사용법이란 무엇입니까?

소켓 쌍 사용법이란 무엇입니까?

小老鼠
小老鼠원래의
2023-09-15 16:33:411097검색

socketpair는 서로 연결된 한 쌍의 소켓을 만드는 데 사용되는 함수입니다. 이는 동일한 프로세스 내의 프로세스 간 통신(IPC)을 위해 Unix 시스템에서 널리 사용됩니다. 해당 함수의 프로토타입은 "int 소켓쌍(int domain, int type, int 프로토콜, int sv[2]);"입니다. 이 기능으로 생성된 소켓은 프로세스 간 양방향 통신을 실현할 수 있으며, 프로세스 간 데이터 전송, 동기화, 알림 등의 기능을 구현하는 데 사용할 수 있습니다.

소켓 쌍 사용법이란 무엇입니까?

socketpair는 서로 연결된 한 쌍의 소켓을 만드는 데 사용되는 함수입니다. 이는 동일한 프로세스 내의 프로세스 간 통신(IPC)을 위해 Unix 시스템에서 널리 사용됩니다.

socketpair 함수의 프로토타입은 다음과 같습니다.

int socketpair(int domain, int type, int protocol, int sv[2]);

매개변수 설명:

- 도메인: 소켓의 프로토콜 계열을 지정하며 일반적으로 AF_UNIX입니다.

- 유형: 소켓 유형을 지정합니다. 일반적으로 SOCK_STREAM(스트림 소켓) 또는 SOCK_DGRAM(데이터그램 소켓)입니다.

- 프로토콜: 소켓의 프로토콜을 지정하며 일반적으로 0입니다.

- sv: 생성된 소켓을 저장하는 데 사용되는 파일 설명자입니다.

socketpair 함수의 반환 값은 성공 시 0, 실패 시 -1입니다.

socketpair 함수를 사용하여 프로세스 간 통신에 사용할 수 있는 연결된 소켓 쌍을 만듭니다. 쌍의 소켓 중 하나는 데이터를 읽는 데 사용되고 다른 하나는 데이터를 쓰는 데 사용됩니다. 동일한 프로세스에서 프로세스 간 통신을 위해 이 소켓 쌍을 사용하여 프로세스 간 데이터 전송을 실현할 수 있습니다.

다음은 프로세스 간 통신을 위해 소켓페어 함수를 사용하는 예제입니다.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
int main() {
    int sv[2];
    if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1) {
        perror("socketpair");
        exit(1);
    }
    pid_t pid = fork();
    if (pid == -1) {
        perror("fork");
        exit(1);
    }
    else if (pid == 0) {
        // 子进程
        close(sv[0]); // 关闭子进程中的读取套接字
        char *message = "Hello from child process!";
        if (write(sv[1], message, strlen(message)) == -1) {
            perror("write");
            exit(1);
        }
        close(sv[1]); // 关闭子进程中的写入套接字
        exit(0);
    }
    else {
        // 父进程
        close(sv[1]); // 关闭父进程中的写入套接字
        char buffer[1024];
        if (read(sv[0], buffer, sizeof(buffer)) == -1) {
            perror("read");
            exit(1);
        }
        printf("Message from child process: %s\n", buffer);
        close(sv[0]); // 关闭父进程中的读取套接字
        exit(0);
    }
}

이 예제에서는 먼저 소켓 쌍을 생성하기 위해 소켓페어 함수를 호출한 후, 포크 함수를 통해 자식 프로세스를 생성합니다. 자식 프로세스에서는 읽기 소켓이 닫힌 다음 쓰기 함수를 사용하여 쓰기 소켓에 데이터를 씁니다. 상위 프로세스에서는 쓰기 소켓이 닫히고 읽기 기능을 사용하여 읽기 소켓에서 데이터를 읽습니다.

socketpair 기능을 통해 생성된 소켓은 프로세스 간 양방향 통신을 구현할 수 있으며, 프로세스 간 데이터 전송, 동기화, 알림 등의 기능을 구현하는 데 사용할 수 있습니다. 실제 응용 프로그램에서는 특정 요구 사항에 따라 프로세스 간 통신에 소켓 쌍 기능을 사용할 수 있습니다.

위 내용은 소켓 쌍 사용법이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.