0

私はインターネットを検索しましたが、答えが得られませんでした

4

2 に答える 2

0

TCP「接続」は4タプルです。ローカルIP、ローカルポート、リモートIP、およびリモートポート。両端は、TCPスタック内でこの識別を維持し、意味を逆にします(ローカルとリモート)。

これらの4つの値の組み合わせは一意である必要があります。これは、同じサーバーに再接続するためにソケットを再利用するTCPクライアントを作成するときによくある問題を説明しています。

「閉じた」接続では、このIDは、TIME_WAIT状態で、しばらくの間、両端のテーブルに残ります。これは、物理層の接続が切断された場合でも接続の整合性を維持し、保留中のパケットが2番目の接続によって受信されないようにするTCPメカニズムの成果物です。TIME_WAITは最大4分続く場合があります。

クライアントがソケットのLocalPortを0(自動エフェメラルポート割り当ての要求)にリセットしない限り、TIME_WAITの期限が切れる前に再接続しようとすると、失敗する可能性があります。新しく作成されたソケットの場合、これは0であるため、プログラマーはConnectを呼び出す前にこの要件を見落とすことがよくあります。

LocalPortは、ソケットをリッスンするための問題だけではありません。

于 2013-01-18T03:15:33.853 に答える
0

サーバーは localport でリッスンし、クライアントは localport からデータを送信します。クライアントのリモート ポートは、サーバーのローカル ポートと同じである必要があります。すなわち: サーバーはポート n (サーバーに相対的なローカル ポート) でリッスンします クライアントはポート n (クライアントに相対的なリモート ポート) でサーバーに接続します

あなたの質問に答えるために、違いは視点に基づいて名前にあります。

これは、VB6 ソケット通信を開始するのに適した場所のようです。

于 2013-01-17T22:41:39.080 に答える