2016-05-13 24 views
-1

TcpClient(IPEndPoint)ではソケットが使用されていますが、TcpClient(String, Int32)では例外がスローされるのはなぜですか?TcpClient(IPEndPoint)ではソケットが使用される例外がスローされるが、TcpClient(String、Int32)ではソケットがスローされないのはなぜですか?

私は自分のコード内のコードは、私が持っている別のタスクでTask listenerTask = Task.Run(() =>{});

内にあることを私が使用してリスナー(IPは:: 1で、ポートは12345です)

listener = new TcpListener(ip, port); //create listener 
listener.Start(); //start listener 
//now code will wait at the while loop until someone connects. 
while (listener.Pending()) { System.Threading.Thread.Sleep(1000); } //check for pending connections every second. 
client = listener.AcceptTcpClient(); //when incoming connection is found accept it. 

注意を持っています次のとおりです。

//client = new TcpClient(new IPEndPoint(ip, port)); //does not work 
client = new TcpClient("localhost", port); //localhost resolves to ::1 

だから何ですか?違いはなんですか? :: 1に解決したlocalhostについて間違っていますか?それが解決しない場合、私のプログラムはどうやって自分自身にエコーバックできますか?

私はそれまでより多くの情報を取得しようとします。

例外の詳細:の

System.Net.Sockets.SocketException was unhandled 
ErrorCode=10048 
HResult=-2147467259 
Message=Only one usage of each socket address (protocol/network address/port) is normally permitted 
NativeErrorCode=10048 
Source=System 
StackTrace: 
    at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.Sockets.Socket.Bind(EndPoint localEP) 
    at System.Net.Sockets.TcpClient..ctor(IPEndPoint localEP) 
    at ConsoleApplication1.Program.Connector(IPAddress[] ips, Int32 port) 
+0

が見えたら、私は次のように私のコードを変更することができましたし、それは私がそれを意図したどのように動作し、これを知っ

これは許可されていません。 – Rahul

+0

リソースモニタでは、2つのエントリを持つConsoleApplication1.exeが表示されています(動作している場合)。 1つのエントリはローカルポート12345とリモートポート63123を持ち、もう1つのエントリはローカルポート63123とリモートポート12345です。@ Rahulはこれについてあなたが話しているのですか? – UpTide

+1

確かに分かりませんが、別のポートを使用してみてください。 – Rahul

答えて

0

マイコード:

client = new TcpClient(new IPEndPoint(ip, port)); 

後で使用するためにローカル IPアドレスを持つローカルポートをバインドします。

client = new TcpClient(new IPEndPoint(localIp, localPort)); //sets up how we are going to be connecting. 
client.Connect(remoteIp, remotePort); //does the real connecting. 

出典:あなたは再び同じポートを使用しようとしているようhttps://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx

関連する問題