阻塞引起的发送速度问题

知识创造者 2012-10-20 02:15:22
我在做双网,用UDP向目标机器的主备网先后用sendto发数据,如果目标机器的主网坏了,向主网发数据的sendto函数就产生了阻塞,影响了整个程序的发送数据的速度!

也急需解决此问题,哪位大侠能给点意见!
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
知识创造者 2012-10-25
  • 打赏
  • 举报
回复
谢谢wwwllg,问题解决啦!
lcwang12 2012-10-24
  • 打赏
  • 举报
回复
是不是你的消息循环没有被触发
UDX协议 2012-10-24
  • 打赏
  • 举报
回复
发送和接收超时都要设置,我从来没有碰到你的问题。
知识创造者 2012-10-24
  • 打赏
  • 举报
回复
超时时间我设过,不过对于对方拔了网线不管用!还是谢谢wwllg了!
UDX协议 2012-10-24
  • 打赏
  • 举报
回复
设置超时时间即可,比如2MS.

可了解下UDX协议,基于UDP的可靠传输协议。
知识创造者 2012-10-24
  • 打赏
  • 举报
回复
Geoff08Zhang,要消除这种短暂阻塞,除了采用非阻塞方式,还有其他方法吗?
Geoff08Zhang 2012-10-23
  • 打赏
  • 举报
回复
正常情况sendto不会阻塞,如果对方拔了网线,应该是本机通过ARP查找对方的硬件地址,没有得到回应,因为此时数据无法发送出去,导致你的sendto有短暂的阻塞.
知识创造者 2012-10-23
  • 打赏
  • 举报
回复
不将UDP的socket设置为非阻塞状态时,接收方突然拔了网线,sendto函数就会有2秒左右的延时!我将它设置为非阻塞模式,就不会出现这种情况了!
傻X 2012-10-22
  • 打赏
  • 举报
回复
UDP你怎么能确保对方能收到呢?如何来判断目标机器的主页损坏?自己定义通信协议保证安全性还不如用TCP
danscort2000 2012-10-22
  • 打赏
  • 举报
回复
sendto 函数不会阻塞吧? 这又不是tcp
引发的延迟只是拷贝到 socket buffer的时间段,几乎可以忽略
你的代码出现阻塞的应该不在这里,更多的恐怕是你的程序逻辑设计有问题
hurryboylqs 2012-10-22
  • 打赏
  • 举报
回复
sendto不会阻塞的吧

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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