我在Windows中使用多線程IOCP服務器。爲了避免處理很多未決的讀取,我在每個連接的套接字上始終只有一個wsarecv
操作。總之我的設計是這樣的:當沒有wsarecv時,輸入數據會發生什麼
- 客戶端連接後,
wsarecv
是在連接插座貼 - 在執行
wsarecv
,數據處理連線和wsasend
張貼在同一插座上 - 時
wsasend
從第2步完成(GQCS獲得通知),wsarecv
重新貼。
這意味着在步驟2和步驟3之間只有一小段時間,當沒有掛起的wsarecv正在等待客戶端數據時,它可以在任何時候出現。
是這種情況,我應該擔心或者我可以假設,如果數據會在這個特定的時間內到達,它將被存儲在某種內部緩衝區中,並從步驟3中的wsarecv
那裏獲取張貼?
thx尋求幫助。
TCP或UDP?在任何一種情況下,它都會被緩衝,在UDP的情況下,如果緩衝時間過長(隨着更多數據的進入),它可能會被丟棄。 – Chad
@乍得,它是TCP。 – maciekm
@maciekm考慮在標題,文本和標籤中添加它的tcp信息 –