看板 C_and_CPP 關於我們 聯絡資訊
若 client 欲 recv() server 的 send() 可是並不清楚 send 會回傳的資料量 如果沒有接收完 send data 那 server 會 bound 住直到recv 完 data 嗎? (假定 server 為 single thread) 又我要如何判斷是否接收資料完畢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.170.171
sosokill:看封包最快最清楚 05/19 01:52
LiloHuang:你可以用 MSG_WAITALL 來保證收取的長度 05/19 09:34
LiloHuang:recv(sock, buf, len, MSG_WAITALL); 05/19 09:35
LiloHuang:如果要看有多少 byte 可以收 可以用 ioctlsocket 05/19 09:36
LiloHuang:u_long iMode = 1;ioctlsocket(sock, FIONBIO, &iMode); 05/19 09:37
LiloHuang:如果沒有使用MSG_WAITALL, 回傳的長度會小於等於你要的 05/19 09:38
LiloHuang:上面貼錯 那是設定non-blocking 這個才是觀看收的長度 05/19 09:39
LiloHuang:unsigned long has;ioctlsocket(sock, FIONREAD, &has); 05/19 09:40