java打开客户端程序_Java客户端服务器应用程序 - 已在使用的地址:connect
我目前正在開發(fā)一個(gè)簡(jiǎn)單的多人游戲,其中有幾個(gè)客戶需要連接到服務(wù)器 .
我的服務(wù)器由一個(gè)serverSocket組成 . 此serverSocket接受傳入連接并將其交給啟動(dòng)單獨(dú)線程的連接對(duì)象 .
ServerSocket seso = new ServerSocket(12345);
while(true){
Socket toClient = seso.accept();
new Connection(toClient); //creates a thread that opens streams etc
}
客戶端打開一個(gè)新的Socket并連接到此服務(wù)器 .
Socket toServer = new Socket();
toServer.setReuseAddress(true);
toServer.bind(new InetSocketAddress(65432)); //always using the same port
toServer.connect(new InetSocketAddress(serverIP,12345));
現(xiàn)在如果我使用 toServer.close(); 關(guān)閉與服務(wù)器的連接并嘗試再次連接到服務(wù)器,我會(huì)收到"address already in use: connect"異常 .
使用TCPView我可以看到客戶端procress的狀態(tài)更改為TIME_WAIT . 但是,由于 setReuseAddress(true) ,我不應(yīng)該再次使用此端口嗎?我使用它錯(cuò)了還是服務(wù)器問題?
我總是在toClient和toServer上調(diào)用.close() . 然而,我總是要等到套接字完全關(guān)閉(在TIME_WAIT之后),然后該客戶端才能再次連接到服務(wù)器 .
當(dāng)我關(guān)閉整個(gè)應(yīng)用程序時(shí),套接字立即關(guān)閉(不在狀態(tài)TIME_WAIT),此客戶端可以連接到我的服務(wù)器 . (并且我的服務(wù)器中存在連接重置異常)
如果不關(guān)閉應(yīng)用程序,我怎么能這樣做?
謝謝你的幫助 .
總結(jié)
以上是生活随笔為你收集整理的java打开客户端程序_Java客户端服务器应用程序 - 已在使用的地址:connect的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 递归算法-扫雷
- 下一篇: 夜光:Java语言基础学习笔记(三)在校