2

Unixドメインソケットを使用してサーバーを構築する必要がありますが、通信の種類を選択するためのオプションがいくつかあるようです。差出人man 2 socket

  • SOCK_STREAM
  • SOCK_DGRAM
  • SOCK_SEQPACKET

それで、それらのすべてに適しているのは何ですか?(ストリーム、データグラム、パケット)

4

2 に答える 2

2

実装するサーバーの種類によって異なります。

メッセージの境界が重要な場合は、それSOCK_DGRAMが最良の選択です。recvfrom/recvmsg/select完全なメッセージを受信すると返されますので。

を使用SOCK_STREAMすると、メッセージの受信がより複雑になります。1回の受信呼び出しで、メッセージの一部、2つのメッセージの一部、または複数のメッセージが返される場合があります。

メッセージの境界が重要でない場合はSOCK_STREAM、最良の選択である可能性があります。

SOCK_DGRAMofAF_INETは信頼性の低いUDPです。しかし、ほとんどのシステムでは、SOCK_DGRAMAF_UNIXは信頼できます。例:受信者のキューがいっぱいになると、スペースができるまで送信者はブロックされます。

于 2012-07-31T07:30:19.670 に答える
0

TCPの場合->SOCK_STREAMUDPの場合->SOCK_DGRAM

于 2012-07-28T11:08:38.477 に答える