[問題] Address already in use: JVM_Bind
我現在寫了一個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)
推
08/14 01:31, , 1F
08/14 01:31, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):