2016-08-08 15 views
0

私は、2つのサーバーA &から来るデータストリームを扱うクライアントコードを書いています.3つのノードはすべて同じローカルサブネット上にあります。私は、以下で説明するように定義された2つのソケットを作成しようとしています。2つのソケットを接続できないのはなぜですか?

ソケット記述= [ローカル/クライアントIP]:[ローカル/クライアントポート]:[/リモートサーバIP]:[/リモートサーバーポート]

ソケットに接続する:[192.168.40.10]: [50002]:[192.168.40.60]:[50002]

ソケットBに接続する:[192.168.40.10]:[50002]:[192.168.40.61]:[50002]

を私はしようとすると2番目のソケットを開くと、 "各ソケットアドレスは別名プロトコル/ネットワークアドレス/ポートを1回だけ使用できる"という例外があります。私は、ローカルIPアドレスとポート番号が同じであっても、リモートIPアドレスが異なるため、別のソケットを定義できると考えました。両方のデータストリームを同じソケットで消費するという選択肢はありませんか?

+0

で行きます。 Windowsは無料のものを選択します。 localportは、ソケットをリッスンモードに設定した場合にのみ必要です。 –

+0

私は、宛先IP 192.168.40.10を使用し、それぞれに固有の宛先ポートを使用するように2つのサーバーを構成する必要があると思います。次に、クライアントの2つのスレッドで実行されている2つのソケットを開き、各サーバーストリームからパケットを受信できます。これにより、私が書いたかなりの量のコードを単一のストリームで再利用することができます。 –

答えて

2

マシンの同じローカルポートを同時に2回使用することはできません。ローカルマシンで別のソケット(別のポート番号、たとえば50003)を開き、[192.168.40.61]:[50002]のリモートソケットに接続できます。

+0

説明をありがとう。私は、リモートIPアドレスを含むものとしてソケットIDを記述する人もいます。どうやら真実ではない。 –

1

同じTCPポート[50002]を使用して2つの異なる接続を確立することはできません。あなたは2つの別々のソケット接続を持つために別のポートを使用する必要があります。

あなたが一意に2つのコネクションを識別するについて話すとき、あなたがクライアントであるため、それだけで空次に、localport財産を残し、IP + PORT

関連する問題