我正在通過TCP套接字測試客戶端 - 服務器通信。我用C編寫了服務器,並且正在Linux機器上運行它,我使用nc
作爲測試客戶端。斷開的管道僅在第二次發送時關閉套接字
服務器在與客戶端初始交換消息後,定期向客戶端發送一些 消息,但沒有得到任何響應。
如果我殺了客戶端,我希望由服務器完成的第一send()
失敗 EPIPE
錯誤,但這個僅在第二send()
客戶端已經經過證明! 我殺了客戶端後第一個send()
能夠成功發送1100個字節到(我想是封閉的)套接字。以下send()
操作以EPIPE
結束。
有人能解釋我這種行爲嗎? 這是因爲我寫入TCP/IP協議棧,因此它可以在堆棧 發送時發送? 如果是這樣,我該如何檢查連接狀態?可以肯定的是對方還在那裏。
感謝您的回答,細緻而清晰。不幸的是,我無法測試你建議我的nc選項,因爲我的Linux機器上的命令似乎不支持它。順便說一句,你指給我的文件和你給我的解釋清楚而有用。謝謝! – Igor