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_DGRAM
ofAF_INET
は信頼性の低いUDPです。しかし、ほとんどのシステムでは、SOCK_DGRAM
のAF_UNIX
は信頼できます。例:受信者のキューがいっぱいになると、スペースができるまで送信者はブロックされます。
TCPの場合->SOCK_STREAMUDPの場合->SOCK_DGRAM