Re: [問題] Address already in use: JVM_Bind

看板java作者 (小安)時間14年前 (2011/08/08 23:46), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《fasthall (Xen)》之銘言: : 一般來說我在等待時按下取消可以很正常的關閉等待 : 只會因為thread被close而產生例外(可以忽視) : 而下次再按下開始等待時client可以正常連進來 : 但是我發現偶爾我很迅速的按下開始後馬上按下取消 : 會在(註1)這行丟出Address already in use: JVM_Bind例外 這個錯誤訊息的意思是, 指定的 port 已經被使用了, 所以建立 Server Socket 時出現問題。 從你文中敘述看來, 不太可能是其他程序佔用相同的 port, 只可能是目前的這支程式。 然而依序按下開始與取消, 只會建立一次 Server Socket, 實在沒有理由出現這樣的錯誤, 比較合理的解釋是前一次的 ServerSocket 沒有被成功關閉。 這時候就不難猜出問題所在了, 建立新的 thread 並 start 時, 並不會保證立刻開始執行 thread, 而當你按開始並迅速取消時, 取消的 code 執行完了,但 ServerSocket 根本還沒建立, 此時你的 GUI 回到了取消後的狀態,而 ServerSocket 建立後卻依然活著, 到了下一回合按下開始又創出新的 ServerSocket,自然就出現 Error 了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.231 ※ 編輯: tkcn 來自: 140.114.78.231 (08/08 23:47) ※ 編輯: tkcn 來自: 140.114.78.231 (08/08 23:52)

08/09 00:17, , 1F
真是神奇的bug 難怪我想破頭都想不出來......
08/09 00:17, 1F

08/09 12:37, , 2F
多執行緒就是這麼神奇.....
08/09 12:37, 2F

08/10 22:47, , 3F
久病成良醫
08/10 22:47, 3F
文章代碼(AID): #1EG0Jan0 (java)
文章代碼(AID): #1EG0Jan0 (java)