[問題] Address already in use: JVM_Bind

看板java作者 (Xen)時間14年前 (2011/08/08 21:33), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我現在寫了一個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
你不是很懂JAVA嗎? socket close掉又不會立即釋放資源
08/14 01:31, 1F
文章代碼(AID): #1EF-MTg6 (java)
文章代碼(AID): #1EF-MTg6 (java)