Warum geht folgender code nicht? (Ist nur ein Beispiel so benutze ich das natürlich nicht)
Erster start Eine runde lauft erfolgreich dannach gibt es sofort ne:Exception in thread "main" java.net.BindException: Address already in use: connect
diese tritt interessanter weise bei der connect auf und nicht bei der bind.
Solange jetzt laut netstat -a diese verbindung noch auf TIME_WAIT steht lässt sich keine weitere Runde beenden.
Hat einer eine Ahnung woher dieses Verhalten kommt?
Erster start Eine runde lauft erfolgreich dannach gibt es sofort ne:Exception in thread "main" java.net.BindException: Address already in use: connect
diese tritt interessanter weise bei der connect auf und nicht bei der bind.
Solange jetzt laut netstat -a diese verbindung noch auf TIME_WAIT steht lässt sich keine weitere Runde beenden.
Hat einer eine Ahnung woher dieses Verhalten kommt?
Java:
import java.net.InetSocketAddress;
import java.net.Socket;
public class TestSocketReuse {
static private InetSocketAddress local = new InetSocketAddress("0.0.0.0", 21);
static private InetSocketAddress remote = new InetSocketAddress("nh-game.net", 80);
public static void main(String[] args) throws Exception{
while(true){
Socket socket = new Socket();
socket.setReuseAddress(true);
socket.bind(local);
socket.connect(remote); //why does this line throws the bind exeption?
socket.close();
System.out.println("Round succesfull");
}
}
}