![](/img/trans.png)
[英]Why app can accept and read/write TCP connection in CLOSE_WAIT state (Linux)?
[英]TCP CLOSE_WAIT state.. & new connection
我在一個眾所周知的TCP端口上有一台服務器,一堆客戶端連接到該端口。 客戶端使用非阻塞選項連接到服務器。
當我終止服務器進程時,客戶端套接字將進入CLOSE_WAIT狀態。 現在,如果我重新啟動服務器進程,並且客戶端嘗試再次連接,則connect()調用似乎被阻止,即使它應該是非阻止的。
實際的解決方法實際上是在服務器死機時關閉套接字。 但我正在嘗試了解當前行為。
這在Linux 2.6.3x內核中可以看到。
聽起來像是客戶端中的錯誤。 如果將套接字設置為非阻塞,然后調用connect
,則沒有理由應該阻塞connect
調用。 您是否可以粘貼用於創建套接字,將其設置為非阻塞並調用connect
的客戶端代碼? 另外,您確定它在connect
呼叫本身中被阻止嗎?
我相信您的問題在這里已完全得到回答,並且與SO_REUSEADDR
有關。 關於使用SO_REUSEADDR的問題的另一個答案 -先前打開的套接字會發生什么? 也很重要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.