Unixドメインソケットを使用してサーバーを構築する必要がありますが、通信の種類を選択するためのオプションがいくつかあるようです。差出人man 2 socket:
- SOCK_STREAM
- SOCK_DGRAM
- SOCK_SEQPACKET
それで、それらのすべてに適しているのは何ですか?(ストリーム、データグラム、パケット)
Unixドメインソケットを使用してサーバーを構築する必要がありますが、通信の種類を選択するためのオプションがいくつかあるようです。差出人man 2 socket:
それで、それらのすべてに適しているのは何ですか?(ストリーム、データグラム、パケット)
実装するサーバーの種類によって異なります。
メッセージの境界が重要な場合は、それSOCK_DGRAMが最良の選択です。recvfrom/recvmsg/select完全なメッセージを受信すると返されますので。
を使用SOCK_STREAMすると、メッセージの受信がより複雑になります。1回の受信呼び出しで、メッセージの一部、2つのメッセージの一部、または複数のメッセージが返される場合があります。
メッセージの境界が重要でない場合はSOCK_STREAM、最良の選択である可能性があります。
SOCK_DGRAMofAF_INETは信頼性の低いUDPです。しかし、ほとんどのシステムでは、SOCK_DGRAMのAF_UNIXは信頼できます。例:受信者のキューがいっぱいになると、スペースができるまで送信者はブロックされます。
TCPの場合->SOCK_STREAMUDPの場合->SOCK_DGRAM