Warum würde ein Socket in Verwendung Ausnahme für TcpClient(IPEndPoint) aber nicht TcpClient(String, Int32) geworfen werden?Warum sollte eine Socket in Use Ausnahme für TcpClient (IPEndPoint) aber nicht TcpClient (String, Int32) geworfen werden?
ich in meinem Code haben ein Zuhörer, die ich mit benutzen (ip ist :: 1, Port 12345 ist)
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.
Beachten Sie, dass Code in einem Ich habe
in einer anderen Aufgabe Task listenerTask = Task.Run(() =>{});
ist die folgende
//client = new TcpClient(new IPEndPoint(ip, port)); //does not work
client = new TcpClient("localhost", port); //localhost resolves to ::1
Also, was ist das Geschäft? Was ist der Unterschied? Bin ich falsch, wenn localhost zu :: 1 auflöst? Wenn sich das nicht so auflöst, wie kann dann mein Programm auf sich selbst zurücksprechen?
Ich werde versuchen, in der Zwischenzeit weitere Informationen zu erhalten.
Ausnahmedetails:
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)
sieht aus wie Sie den gleichen Port versuchen, wieder zu verwenden, was nicht erlaubt ist. – Rahul
Im Ressourcenmonitor sehe ich meine ConsoleApplication1.exe mit zwei Einträgen (wenn es funktioniert). Ein Eintrag hat den lokalen Port 12345 und den Remote-Port 63123, während der andere Eintrag den lokalen Port 63123 und den Remote-Port 12345 hat. @Rahul ist das, wovon Sie sprechen? – UpTide
nicht sehr sicher, aber versuchen Sie es mit anderen Port insgesamt. – Rahul