ソケットバッファをしてください説明
-
16-09-2019 - |
質問
私は、ソケットプログラミングについての例を見つけようと、このスクリプトに出くわしました。 http://stacklessexamples.googlecode.com/svn/trunk/examples/ネットワーキング/ mud.pyする
このスクリプトを読んだときは、私は、この行を見つけました: listenSocket.listen(5)
私はそれを理解したよう - それは、バッファから5つのバイトを読み込み、それをものにし...
が、5つの以上のバイトは、もう一方の端によって送信された場合に何が起こりますか?
そのスクリプトの他の場所では、4つのコマンドに対して入力をチェックし、Rの\ \ Nの文字列に存在する場合に見ています。 「見て」プラス\ rを\ nは5つの以上のバイトを補う?
のようなコマンドをいけませんアラン
解決
以下は、一般的にはソケットに適用可能であり、それは、Pythonからソケットを使用することについて、あなたの特定の質問に答える必要があります。
socket.listen()は、のサーバーの着信接続要求をリッスンするのソケットで使用されます。
聞くために渡されたパラメータ)のバックログのと呼ばれ、それがどのように多くの接続ソケットが受け入れ、あなたが(受け入れるためにあなたのコールを終了するまで保留バッファに入れるべきであることを意味しています。それはあなたが(聞くと呼ばれている時間)、あなたは()を受け入れるために、一致するコールを終了した時間の間、サーバーソケットに接続するために待っている接続に適用されます。
だから、あなたの例では、あなたが5つの接続にバックログを設定している。
あなたは5つの接続にあなたのバックログを設定した場合、注は..以下の接続(第6、第7など)が削除され、接続ソケットはのエラーが表示されます>メッセージ(のような何かメッセージ「ホストが積極的に接続を拒否しました」)。
他のヒント
これは、あなたがコードを理解するのに役立つかもしれない: http://www.amk.ca/パイソン/ HOWTO /ソケット/ の
5
に引数listenSocket.listen
読み取りまたはバッファするバイト数ではありません、それはbacklog
です。
への接続のために聞きます ソケット。バックログ引数の指定 キューに入れられた数の最大値 接続は、少なくとも1であるべきです。 最大値はシステム依存性であります (通常5)。