2012-01-16 8 views
0

私はさまざまなクライアントからの複数の接続を受け入れるソケットサーバーを持っています。接続するクライアントアプリケーションでlocalhostでテストしています - データを送信し、接続を10ミリ秒ごとに10回クローズします。テストクライアントがエラーを発生させることがあります。リモートサーバーまたは類似のものによって接続が拒否されました。 これはサーバーアプリケーションの通常の動作ですか?接続が拒否されたソケット。通常の動作ですか?

+0

どのようなOSですか?いくつかのコードを投稿してください。 – selbie

答えて

2

接続する10mSごとに1つの接続が1ミリ秒ごとに接続されますが、これはかなり高速です。これらの接続の試行は並行して行われていますか?もしそうなら、サーバーのlisten()バックログ・キューをいっぱいにしているかもしれません。バックログキューがいっぱいになっている間に接続しようとするIIRCクライアントは、接続拒否エラーを受け取ります。

この仮説をテストするには、サーバー上のlisten()の第2引数として大きい数値または小さい数値を渡して、接続拒否エラーが多かれ少なかれ発生するかどうかを確認してください。

0

私はジェレミーと一緒です。あなたはプロトコルについて言及していませんでしたが、私はそれがSOCK_STREAMだと思います。ほとんどのローカル接続以外でtcpハンドシェイクを行うのに10ms以上かかるので、バックログをどれくらい高く設定してもバックログ(および後続の接続拒否エラー)が発生します。

接続を開いたままにして、各計算サイクルで閉じることはできません。

関連する問題