[問題] about win32 recv( )

看板C_and_CPP (C/C++)作者時間16年前 (2009/10/31 13:35), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/2 (看更多)
HELLO 最近在vc上開發socket通訊 使用到windows 的 recv(SOCKET s, char* buffer,int bufferSize,int flag) 想請問的有2個問題 1.假設server端丟某個訊息過來 , 而我client端用上述的recv來接受訊息 假如server丟的訊息長度高達1024byte,如果我沒有誤解的話 recv是有可能收到500byte就返回的(未完整接受) 這部分該如何解決呢? 我自已的想法是 * 使用readline (如果系統沒有就自已包),而server丟的訊息會在結尾 加上\n。 2. 有沒有可能server連丟2個訊息,而我卻在一次recv中收到2個訊息? 意即server send "aaa" 然後 send "bbb" 結果我一次recv就收到"aaabbb"? 我是猜不太可能這樣... 不過我實在不確定 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.159.167

10/31 15:46, , 1F
第一個問題:自己做切割 超過buffer大小的分開來傳送
10/31 15:46, 1F

10/31 15:46, , 2F
並且在傳送的資料前加入一些自訂的訊息 好讓client端
10/31 15:46, 2F

10/31 15:47, , 3F
可以判斷目前收到哪個部份
10/31 15:47, 3F

10/31 15:47, , 4F
第二個問題:以我的經驗是不會有這種情況的 頂多收到的順
10/31 15:47, 4F

10/31 15:48, , 5F
序有可能不同 server端先送aaa有可能會先收到bbb
10/31 15:48, 5F
文章代碼(AID): #1AwyoHr9 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AwyoHr9 (C_and_CPP)