为了账号安全,请及时绑定邮箱和手机立即绑定

有了解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 关注
  • 338 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信