请教:在利用TNMUDP进行udp通讯时,要发送较多的数据,在发送时,就不能接收数据。是什么原因?如何才能做到能发送和接收数据同时进行,即B向C发送时,能接收A

  • 主题发起人 主题发起人 xuekunli
  • 开始时间 开始时间
X

xuekunli

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:在利用TNMUDP进行udp通讯时,要发送较多的数据,在发送时,就不能接收数据。是什么原因?如何才能做到能发送和接收数据同时进行,即B向C发送时,能接收A发送的数据!(10分)<br />在利用TNMUDP进行udp通讯时,要发送较多的数据,在发送时,就不能接收数据。
是什么原因?如何才能做到能发送和接收数据同时进行,即B向C发送时,能接收
A发送的数据!
 
UDP进行发送数据时,当数据块的大小大于400字节时,其接受就会有问题,会接不全,所以
大数据块必须分成很多块,分开发送.但udp协议是无连接,无序,有边界数据包,所以发送
时同时接受时没问题的,只要分成很多小块发送,但接受是无序的,处理比较困难.
 
建议使用TNMStrm,很方便。
如果你是向另一计算机发送指令,用不到这么大的数据,如果真需要,说明你设计有问题[:D]
 
在UDP中,传输包不能大于2048字节,但UDP连续发送在网路上一般来讲肯定会造成包丢失!
(100M局域网1000包的测试结果为丢失352个)
所以一般就是一次发送全部数据,如OICQ,
但如果是UDP远程监控,那么肯定就有多个包传送,
此时在两个包之间加入毫秒级的时间延迟就能大大缓解丢包问题,
(1000包的测试结果为丢失0个)
在互联网上使用,建议由Client方在接受到包后向Server发送包请求,这样可以保证不丢包
 
UDP本身有一个限制,另外看NMUDP的时候发现其源码当中好象也有限制,好象是8KB吧(有
点记不得了)。另UDP协议是没有效验的,所以接收方自己一定要做这个工作。
建立发送的时候放到一个线程当中去。
 
多人接受答案了。
 
后退
顶部