Socket端口複用

在網絡應用中(如Java Socket Server),當服務關掉立馬重啓時,不少時候會提示端口仍被佔用(因端口上有處於TIME_WAIT的鏈接)。此時可經過 SO_REUSEADDR 參數( socket.setReuseAddress(true); )來使得服務關掉重啓時立馬可以使用該端口,而不是提示端口占用。網絡

 若是端口忙,但TCP狀態位於 TIME_WAIT ,能夠重用 端口。若是端口忙,而TCP狀態位於其餘狀態,重用端口時依舊獲得一個錯誤信息, 拋出「Address already in use: JVM_Bind」。若是你的服務程序中止後想當即重啓,不等60秒,而新套接字依舊 使用同一端口,此時 SO_REUSEADDR 選項很是有用。必須意識到,此時任何非期 望數據到達,均可能致使服務程序反應混亂,不過這只是一種可能,事實上很不可能。 socket

詳見:https://elf8848.iteye.com/blog/1739598spa

相關文章
相關標籤/搜索