Re: [問題] WINSOCK send 和 recv

看板C_and_CPP (C/C++)作者 (相見不如懷念)時間16年前 (2009/05/19 10:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《elfkiller (沒有暱稱)》之銘言: : 若 client 欲 recv() server 的 send() : 可是並不清楚 send 會回傳的資料量 : 如果沒有接收完 send data : 那 server 會 bound 住直到recv 完 data 嗎? (假定 server 為 single thread) : 又我要如何判斷是否接收資料完畢? 乾脆回一篇好了, 推文實在講不清楚 一般而言你可以用 MSG_WAITALL 來保證收取的長度 recv(sock, buf, len, MSG_WAITALL); 前提是你已經知道你要收的長度是多長 如果要看目前有多少 byte 可以收 可以用 ioctlsocket unsigned long has; ioctlsocket(sock, FIONREAD, &has); 你需要制定一個簡單的協定來描述是否已經把資料送完 例如: HTTP 封包,使用 \r\n\r\n 來當作 header 傳輸完畢的區隔,後面就是 Payload RTP 封包,前面的四個 byte header 的3/4 byte,描述了後面 Payload 的長度 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.79.63.18
文章代碼(AID): #1A4XSr0F (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A4XSr0F (C_and_CPP)