亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有了解recv()函數怎么一次接收send()三次發送的數據的嗎?

有了解recv()函數怎么一次接收send()三次發送的數據的嗎?

C
MMMHUHU 2021-11-03 07:07:51
服務端三次用send()函數發送數據,客戶端用一次recv()函數接收這三次的數據,怎么才能都接收到。例如:(不寫參數了)send(xxxxxxxxxxxxxxxxxxxxx);send(yyyyyyyyyyyyyyyyyyyyyyyyyyyy);send(zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz);用一次recv()接收,然后sprinf()出現xxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz我用recv()函數接收后只能打印出xxxxxxxxxxxxxxxxxxxxx而下一次在接收別的數據時候再打印就會出現yyyyyyyyyyyyyyyyyyyyyyyyyyyy總是慢了一次~!用nc就可以一次全接收到~!請問怎么寫代碼可以一次就接收到并打印出來~!用循環也可以~!怎么才能知道服務端已經發送完成,然后一次打印出來~!
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

不可能知道服務器是否已經發送完畢,因為你發送的沒有數據協議的格式,你可以讓發送方與接收方定個協議。其實你可以在recv時加個參數,讓它只是看看有沒有數據到達,recv最后那個參數設為MSG_OOB就可以,當發現有數據到時,你先Sleep一下,至于多長時間就要看實際情況,一般幾十個毫秒就絕對夠了,然后,你再recv一下,這次最后那個參數為MSG_WAITALL就可以,這樣就一次性接收完畢

查看完整回答
反對 回復 2021-11-07
  • 1 回答
  • 0 關注
  • 367 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號