次の点を考慮してください。
IPEndPoint ep = new IPEndPoint(ip, 0);
TcpClient tcpClient = new TcpClient (ep);
tcpClient.Connect(ep);
tcpClient最初に にバインドしep、 に接続するように に指示する必要があるのはなぜですかep。Connect()すでにバインドされているエンドポイントに比べて、私は奇妙に思えます。
を受け入れるコンストラクターは、ローカルエンドポイント アドレスIPEndpointをバインドするためのものです。リモートエンドポイントアドレスが渡されることを意図しています。これらの 2 つのことの一方は他方と矛盾しています。Connect
コンストラクタ:
クラスの新しいインスタンスを初期化
TcpClientし、指定されたローカル エンドポイントにバインドします。
Connect:
指定されたリモート ネットワーク エンドポイントを使用して、クライアントをリモート TCP ホストに接続します。
しかし、ローカル エンドポイントかリモート エンドポイントかがわからないため、どちらepが間違っているかはわかりません。を指定したので、ローカル エンドポイントを推測します。0この場合、呼び出し用に別のエンドポイントを識別する必要がありますConnect。何に接続しようとしていますか?
ここに何かが欠けているかどうかはわかりませんが、デフォルトのコンストラクターがあります。
http://msdn.microsoft.com/en-us/library/aa329755(v=vs.71).aspx