Re: [問題] Address already in use: JVM_Bind
※ 引述《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
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):