作者fasthall (Xen)
看板java
标题[问题] Address already in use: JVM_Bind
时间Mon Aug 8 21:33:15 2011
我现在写了一个server
按下按钮时会产生thread让socket等待连线:
public String waitForClient() throws IOException {
serverSocket = new ServerSocket(serverPort); (注1)
Socket clientSocket = serverSocket.accept();
connect = true;
......
return clientSocket.getInetAddress().getHostName();
} ......catch (IOException e) {...}
另一个按钮是取消等待连线:
public void closeConnection() {
try {
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
一般来说我在等待时按下取消可以很正常的关闭等待
只会因为thread被close而产生例外(可以忽视)
而下次再按下开始等待时client可以正常连进来
但是我发现偶尔我很迅速的按下开始後马上按下取消
会在(注1)这行丢出Address already in use: JVM_Bind例外
这之後的等待都连不进来
当然我可以让使用者开始等待半秒後才能取消解决这问题
可是我想了很久还是想不通问题出在哪
恳请前辈们解答?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.240.68.41
※ 编辑: fasthall 来自: 123.240.68.41 (08/08 21:35)
1F:推 DearKurt:你不是很懂JAVA吗? socket close掉又不会立即释放资源 08/14 01:31