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)
が見えたら、私は次のように私のコードを変更することができましたし、それは私がそれを意図したどのように動作し、これを知っ
これは許可されていません。 – Rahul
リソースモニタでは、2つのエントリを持つConsoleApplication1.exeが表示されています(動作している場合)。 1つのエントリはローカルポート12345とリモートポート63123を持ち、もう1つのエントリはローカルポート63123とリモートポート12345です。@ Rahulはこれについてあなたが話しているのですか? – UpTide
確かに分かりませんが、別のポートを使用してみてください。 – Rahul