c++builder关于indy udp通信的问题

vvyy_1202 2019-03-08 04:32:52
用的tidudpserve控件,一共需发送15522个字节,每一次调用sendbuffer发送78个字节,在一个循环里循环199次。问题来了: 如果就一个循环发送,接收端只能收到8000多个; 如果在每次循环后sleep(1),就能接收完整。 求教这是什么原因造成的啊?
...全文
349 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2019-03-11
  • 打赏
  • 举报
回复
使用网络组建,就是需要考虑网络响应的,猜测你可能使用循环,在循环开始会清空缓冲区,之后发送数据。
如果网络响应的慢,还真得有可能丢包。
你已经测试了,在每次循环末尾等待一下,就会提高数据发送的完整率。如果时间长了,或者遇到网络不稳定,也会丢包的。
需要完整性的话,可以考虑TCP或者自己改造UDP,在数据内增加编号,少了哪条,客户端再索要。
ooolinux 2019-03-09
  • 打赏
  • 举报
回复
不知道idudp的缓冲机制是怎样的,为什么数据会错过。
ooolinux 2019-03-08
  • 打赏
  • 举报
回复
接收端是单独的线程接收?Windows是要调度线程的,可能因为有的时候线程不在运行态,没有收到数据。UDP的机制是尽力送达(有的数据包丢就丢了),不如TCP可靠。

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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