簡體   English   中英

在JAVA中如何連接並等待端口完成TIME_WAIT

[英]In JAVA how to connection and wait for port to finish TIME_WAIT

我在代碼中有一部分檢查端口可用性(打開連接並立即關閉它):

try{
   new ServerSocket(currentConnector.getPort()).close();
 }

這里的問題是端口進入的TIME_WAIT狀態因系統而異。 我想確保在close()該端口可用。

我能想到的一種方法是增加60-90秒的睡眠時間。 但這似乎並不優雅。

我可以使用Java(不帶bash / batch)驗證端口是從TIME_WAIT釋放的嗎?

謝謝!

  1. 僅當有人連接到端口時,該端口才進入TIME-WAIT。

  2. 您可以通過以下方法克服BindException

     ServerSocket ss = new ServerSocket(); ss.setReuseAddress(true); ss.bind(new InetSocketAddress(port)); 
  3. 但是我對目標提出了質疑。 如果要監聽端口,請監聽該端口,然后捕獲異常。 如果要查看是否可以連接到它,請連接到它,並在出現異常時進行處理。 最終預測未來的技術只是算命。 不完善的技術。 檢測任何資源是否可用的正確方法只是嘗試以常規方式使用它。 其他任何事情都有可能導致誤報,誤報和時序窗口問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM