1

TCPサーバー/クライアントをセットアップしていて、それらは私が一般的に望む方法で通信します。

私が今やりたいのは、接続が失われたときにクライアントがサーバーに自動的に再接続できるようにする機能を追加することです。これを行う方法に関する完全な情報をオンラインで見つけるのに苦労しています。

詳細:-私はサーバーを1つしか持っておらず、これまでのところ、最大で1つの接続しかホストしていません。-クライアントまたはサーバーのいずれかが切断された場合-両方を閉じます(このようにサーバーとクライアントの両方のソケットを閉じるのが賢明ですか?)

理想的には、クライアントが毎回サーバー上の同じポートに再接続できるようにしたいと思います。TIME_WAITとそれが必要な理由を理解しています。別のオプションがない限り、SO_REUSEADDRを実際に使用したくありません。これは一般的にどのように処理されますか?古いソケットがTIME_WAITを終了するのを待っている間に、サーバー側で新しいポートを開き、基本的に2つのポートを交互に切り替える必要があります(つまり、クライアントは2つの可能なポートを追跡する必要があります)。

あなたの提案をありがとう!

4

1 に答える 1

3

TIME_WAITは、ポートではなくTCP接続の状態です。すべてのTCP接続は、タプル(ローカルアドレス、ローカルポート、リモートアドレス、リモートポート)によって識別されます。したがって、クライアントが新しい(動的)ローカルポートを使用してサーバーに接続する場合、新しいTCP接続が作成され、TIME_WAITは発行されません。

于 2012-07-15T09:04:43.643 に答える