Ich habe den folgenden Code für eine Keep-Alive-Serversocket, jdk 1.8, Windows7:Java Serversocket gebunden, aber nicht hören
serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(port)); // <-- port is 19876
System.out.println("Server bound on " + port + " " + serverSocket);
Das Problem ist manchmal, wenn ich das laufen, es zeigt sich in netstat hören, aber es manchmal nicht. Da es keine Ausnahme gibt, würde ich erwarten, dass es tatsächlich gebunden ist, aber es ist zufällig.
Der einwandfreie Betrieb, netstat kurz nach dem println:
TCP 0.0.0.0:19876 0.0.0.0:0 LISTENING 7944
TCP [::]:19876 [::]:0 LISTENING 7944
Netstat kurz nach dem println:
C:\Users\tmplr>netstat -ano | find "198"
C:\Users\tmplr>netstat -ano | find "198"
In beiden Fällen gibt es keine Ausnahme und die println erzeugt das gleiche:
Server bound on 19876 ServerSocket[addr=0.0.0.0/0.0.0.0,localport=19876]
Irgendeine Idee, was hier falsch ist oder wie könnte ich das Problem debuggen?
Warum ist es im ersten Fall hören ohne akzeptieren zu telefonieren? In meinem Verständnis ist 'listen' bereits im Aufruf von' bind' enthalten. – Templar