C/C++ 中的关于recv send函数

xuwmzi 2010-05-28 09:19:08
我们公司用TCP 发送数据时,包括简单消息,都用循环加这两个函数,这样的话,当消息很少时,就必须得双方先指定好消息的长度。也就是说得多发送一次数据。否则双方就死锁。全都在等待数据。
请问一下,这是正常的解决方式么?
如果用循环,那么每次发送多少数据合适呢?
...全文
189 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newzai 2010-05-28
  • 打赏
  • 举报
回复
收发一般使用不同的线程。或者使用select就可以放在同一个线程了。
如果使用的是tcp,一般要有自己定义的规则去分隔数据量的片段。否则接收方无法知道何时接收一个完整的包。
至于如何分隔数据流,而已附加一个长度,或者起始结束符。
wangxipu 2010-05-28
  • 打赏
  • 举报
回复
1. 确实情况下,recv和send都是阻塞的,也就是说如果没有数据会一直等下去。
2. winsock没有做任何的传输可靠的保障,所以需要自己确保,可以将数据打包成一个结构体,前面添加一些控制头信息,先接收或发送这部分东西。
3. 一般来说,不建议send和recv写在同一个线程里,这样相互等待很不好。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧