UNIXドメインソケット:「ビジー」信号のようなものがあるのでしょうか?

StackOverflow https://stackoverflow.com/questions/1478975

  •  16-09-2019
  •  | 
  •  

質問

のクライアントのUNIXドメインソケット(AF_UNIX型)を介してデータをプッシュ通知するのの忙しい受信側では、負荷に対処することができない場合はどうなりますか?

または

フロー制御を処理するためのソケットの上にクライアントサーバプロトコルが存在しなければならない?

役に立ちましたか?

解決

あなたは、プロトコルでこれを含めない限り、

は、サーバは情報の送信を一時停止するクライアントに伝える方法はありません。

他のヒント

あなたは間違いなく、UNIXドメインソケットに送信ブロッキングを行うことができます。受信側の受信バッファがいっぱいになった場合、または非凡(未配信)送信ソケットバッファの数が多すぎる場合は、送信者がブロックします。

SOCK_STREAM UNIXドメインソケットはTCPソケットのように働きます。 UDPソケットは再注文またはドロップすることができ、一方、SOCK_DGRAM UNIXドメインソケットは、UNIXドメインデータグラムが保証されていること、順序どおりの配信を除き、UDPのような働きをします。 (また、UNIXドメインソケットは、ファイルディスクリプタを送信し、TCP、UDP、またはパイプで行うことができますどちらもプロセス間でユーザーの資格情報を渡すために使用することができます。)

で順序どおりの配信がUNIXドメインソケットのすべてのタイプによって保証されているので、それは他のことをやってビジー状態であるときに、受信機は、単に受信を停止することができ、利用可能な(またはそれ以上のバッファスペースがありませんとき、送信者は自動的にブロックされます彼らは彼らのソケットに非ブロッキング操作を要求された場合)、それ以上のバッファスペースがありませんことが通知されます。受信機が再び受信を開始したときに続いて、送信者がより多くの送信を許可されます。

それは忙しい 'とバック特定の信号を送信するときのいくつかの知識(例えば、HTTPの503サービスを使用できません)を有するサーバ以外。また、一定時間後にタイムアウトするクライアント側の接続を設定し、あなたがタイムアウトイベントを取得する場合、サーバとしてビジー状態であることを解釈することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top