新創建的Socket返回的描述符和剛剛斷開的Socket的描述符相同

這兩天在跟蹤一個故障,網絡部分的,邏輯有點複雜,最後定位到斷開一個TCP連接再快速創建一個新的TCP連接(WIndows窗口綁定的網絡,主線程中操作)。這個新創建的Socket返回的描述符和剛剛斷開的Socket的描述符相同,導致斷開的Socket返回的FD_CLOSE消息將新創建的Socket又給關閉了。程序邏輯是和Socket描述符相關的。爲了最簡單的解決(項目後期),在斷開連接後有1S定時器,定時器到了後再創建新的連接(目的是爲了等待剛剛關閉的出發的FD_CLOSE消息執行完畢)。FD_CLOSE消息肯定是在TIMER消息之前,所以不會有問題。測試發現如果是有定時器比較難發現新建的和剛剛斷開的連接的描述符是相同的,不過和以前的還是有相同的(已經不影響我們的程序邏輯了)。如果馬上新連接,在某種情況下還是比較常見的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章