java打开客户端程序_Java客户端服务器应用程序 - 已在使用的地址:connect
我目前正在開發一個簡單的多人游戲,其中有幾個客戶需要連接到服務器 .
我的服務器由一個serverSocket組成 . 此serverSocket接受傳入連接并將其交給啟動單獨線程的連接對象 .
ServerSocket seso = new ServerSocket(12345);
while(true){
Socket toClient = seso.accept();
new Connection(toClient); //creates a thread that opens streams etc
}
客戶端打開一個新的Socket并連接到此服務器 .
Socket toServer = new Socket();
toServer.setReuseAddress(true);
toServer.bind(new InetSocketAddress(65432)); //always using the same port
toServer.connect(new InetSocketAddress(serverIP,12345));
現在如果我使用 toServer.close(); 關閉與服務器的連接并嘗試再次連接到服務器,我會收到"address already in use: connect"異常 .
使用TCPView我可以看到客戶端procress的狀態更改為TIME_WAIT . 但是,由于 setReuseAddress(true) ,我不應該再次使用此端口嗎?我使用它錯了還是服務器問題?
我總是在toClient和toServer上調用.close() . 然而,我總是要等到套接字完全關閉(在TIME_WAIT之后),然后該客戶端才能再次連接到服務器 .
當我關閉整個應用程序時,套接字立即關閉(不在狀態TIME_WAIT),此客戶端可以連接到我的服務器 . (并且我的服務器中存在連接重置異常)
如果不關閉應用程序,我怎么能這樣做?
謝謝你的幫助 .
總結
以上是生活随笔為你收集整理的java打开客户端程序_Java客户端服务器应用程序 - 已在使用的地址:connect的全部內容,希望文章能夠幫你解決所遇到的問題。