[問題] socket send太快

看板C_and_CPP (C/C++)作者 (rain)時間13年前 (2012/07/25 15:49), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) G++ linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 現在我在模擬一台sensor把資料傳給server作計算之後再傳到後端的server的資料庫裡 client端寫一個while loop去getline我一個txt檔每一行的string 每一行讀完就丟到socket裡send出去server裡 到server之後 用recv把資料抓到char*[]裡面 因為client send太快 我抓到的資料可能會包含兩個封包以上的string 目前的解決方法是在client端加上sleep(1)函數 可是這樣資料又傳的太慢了 如果要傳快一點 recv收到的資料又太多了 這樣要怎麼處理比較好? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.107

07/25 16:01, , 1F
讓server回ack client收到ack再寄下一筆
07/25 16:01, 1F

07/25 18:39, , 2F
TCP Socket嗎?
07/25 18:39, 2F

07/25 21:29, , 3F
加一個字元當作分隔符號啊
07/25 21:29, 3F

07/26 11:34, , 4F
這不是send太快的問題,你的封包要自己加上一個header
07/26 11:34, 4F

07/26 11:35, , 5F
比如說先送4bytes表示資料長度,recv就知道要收多少
07/26 11:35, 5F

07/26 11:36, , 6F
為一個完整資料
07/26 11:36, 6F

07/27 02:14, , 7F
用Ack比較好吧...?
07/27 02:14, 7F

08/01 10:42, , 8F
用ack沒比較好...最好的方法是如lwecloud所述
08/01 10:42, 8F

08/01 10:43, , 9F
用ack recv還是不知道要收多少 除非要寫死在code中
08/01 10:43, 9F
文章代碼(AID): #1G3wJ_JO (C_and_CPP)
文章代碼(AID): #1G3wJ_JO (C_and_CPP)