유닉스 소켓. 기본적으로
socket(PF_UNIX, SOCK_STREAM, 0)
으로 전화하십시오. 이것은 파일 기술자를 반환하거나 에러시 -1을 반환합니다.
struct sockaddr_un addr; bzero(addr); addr.sun_len = sizeof(addr); addr.sun_family = PF_UNIX; strncpy(addr.sun_path, "/path/to/file", sizeof(addr.sun_path)-1);
과 같은 것을 사용하여 소켓 주소를 만듭니다.
bind(fd, &addr, sizeof(addr))
으로 전화하십시오.
- 연결을 수신 대기하려면
listen(fd,backlog)
으로 전화하십시오. backlog
은 존재할 수있는 accept() 연결의 수입니다.
- accept()를 사용하여 클라이언트의 연결을 수락합니다. 새로운 FD 또는 -1 오류가 반환됩니다.
- 클라이언트가 비슷한 소켓을 만들고 주소에 connect()를 수행하게하십시오 (바인딩하지 않아도됩니다).
- 완료되면 파일/path/to/file을 제거하십시오 (나중에 다시 사용하려면 그대로 두십시오).
유닉스 소켓에서 SOCK_DGRAM이 지원되는지 확실치 않습니다. 그렇다면 아마 UDP와 유사 할 것입니다.
socket (2), bind (2), listen (2), accept (2), connect (2), unix (4), setsockopt (2)의 매뉴얼 페이지를 참조하십시오.
"겹친 I/O"의 경우 select (2)를 참조하십시오. fcntl(fd,F_SETFL,(int)(fcntl(fd,F_GETFL)|O_NONBLOCK))
으로 non-blocking IO를 추가로 활성화 할 수 있습니다 (fcntl (2) 참조). 이는 read() 및 write()가 결코 차단되지 않음을 의미합니다 (write()가 반환 할 수 있으므로 반환 값을 살펴 봐야 함).
Windows 명명 된 파이프가 여러 클라이언트의 다중 연결을 나타내는 방식은 잘 모르겠지만 UNIX에서는 연결 당 하나의 파일 설명자 ("수신 대기"소켓의 경우 하나)를 얻습니다.