Unix データグラムソケット: family=AF_UNIX/AF_LOCAL タイプ=SOCK_DGRAM
このタイプのソケットのサーバーを起動するには、「listen」を呼び出してリッスンしているとマークする必要がありますか?私はリスニングが接続指向のソケットでのみ動作するという印象を受けました。
答え1
いいえ。listen()
設定または解除する接続がないため、データグラムソケットでは機能しません。bind()
ソケットが接続されたら、sendto()
受信アドレスを指定してすぐにパケット転送を開始できます。パケットrecv()
を使用またはread()
受信することもできますが、recvfrom()
パケットの送信者が誰であるかを知りたい場合は(たとえば、応答できるように)、使用する必要があります。
特定のホストと会話したい場合は、できる(必須ではありません)connect()
データグラムソケットに使用されます。この場合、connect()
実際にはリモートホストに接続されません。ソケットのデフォルトターゲットのみを設定するため、または同じ機能を使用できますが、ターゲットを指定することはできませんsend()
。write()