Listen 명령이 Unix 데이터그램 소켓에서 작동합니까?

Listen 명령이 Unix 데이터그램 소켓에서 작동합니까?

Unix 데이터그램 소켓: family=AF_UNIX/AF_LOCAL 유형=SOCK_DGRAM

이러한 유형의 소켓에 대한 서버를 시작하려면 'listen'을 호출하여 수신 대기 중인 것으로 표시해야 합니까? 나는 청취가 연결 지향 소켓에서만 작동한다는 인상을 받았습니다.

답변1

아니요. listen()설정하거나 해제할 연결이 없기 때문에 데이터그램 소켓에서는 작동하지 않습니다. bind()소켓이 연결되면 sendto()수신 주소를 지정하여 즉시 패킷 전송을 시작할 수 있습니다. 패킷을 사용 recv()하거나 read()받을 수도 있지만, recvfrom()패킷을 보낸 사람이 누구인지 알고 싶다면(예를 들어 응답할 수 있도록) 을 사용해야 합니다.

특정 호스트와 대화하고 싶다면,할 수 있는(필수는 아님) connect()데이터그램 소켓에 사용됩니다. 이 경우 connect()실제로 원격 호스트에 연결되지 않습니다. 소켓의 기본 대상만 설정하므로 또는 같은 기능을 사용할 수 있지만 대상을 지정할 수는 없습니다 send().write()

관련 정보