关于TCP和UDP的讨论(200分)

  • 主题发起人 主题发起人 cw2
  • 开始时间 开始时间
C

cw2

Unregistered / Unconfirmed
GUEST, unregistred user!
环境: 100M局域网
1. TCP相比UDP而言, 传输速度会慢多少? 1倍?
2. 两个线程均使用send进行发送,会不会有问题?
3. UDP是不是有可能后发先至? 也就是说,后发的数据先到达?
4. 如果在网上传输实时语音,应该用UDP还是TCP好一些?
5. TCP和UDP每次发送的数据量有限制吗? 1K? 2K?
 
1、由于TCP建立了服务器和客户端的连接,多了许多额外开销,所以TCP的传输速度
比UDP慢一些。当数据量小时应该差别不明显,当数据量大时差别会大一些。
2、不会有问题
3、有可能,不过在目的地会重新排列好的
4、如果是点对点TCP好,如果是点对多点UDP好
5、IP数据包MTU为1500字节(指以太网,其他网络有所不同)
 
1。TCP必须先建立连接再传输数据,而UDP可以直接发送,所以UDP快。快多少视网络情况
而定。
3。有可能。但在局域网内极少发生。在Internet上当然可能。
4。在局域网上,如果数据量大,可用TCP,反之可用UDP。如果在Internet上建议用RTP。
5。单个数据报有长度限制。因为在数据链路层有最大帧长,而且IP层有MTU(最大传输单元)
在以太网上最大帧长约1500k字节(记不太清了)。
 
我调用send进行发送(非阻塞方式),
接连调用几个send以后,接收的数据就出错了.
如果在send后面加延时,就不会出错,但是这也比不是个办法啊....
如果用TCP,能够一点对多点发送吗?
用TCP是否会导致很长的延时?
 
请问用ClientSocket,ServerSocket是如何知道用的TCP还是UDP。换句话说程序中是如何用
UDP发送的数据,如何用TCP发送数据。还是有其它的控件
 
当然用UDP,多个线程同时对一个SOCKET操作send,是有问题,建义边采样,边打包,边发送
语音包的时序性及准确性要求不高,最重要的是时延!每次发送的大小可以看你源数据流和速率
(采样)和目标数据流的流量(回放),一般2K是比较理想的参数。
 
我觉得传输速度并不会有太多的差别,只是TCP有一个建立连接的过程,连接建立之后,
两者的速度就应该是一样的。
由于每个数据包经过的路线都可能不同,所以很有可能后发先至。
TCP没有一对多的功能。
 
如果我用UDP,两个线程,一个使用端口7001发送,另一个使用端口7002发送,
接收端会同时收到两个端口传来的数据吗?
还是必须一个端口的停了以后,另一个才能收到数据?
 
帮你提前
 
to hzfgh:
在Delphi里,ClientSocket, ServerSocket用的是TCP/IP协议,如果用UDP协议,可以使用TNMUDP控件,
不过要注意此控件有一些没有解决的bug。
to cw2:
1、因为UDP是采用无连接方式,因此并不对数据传输过程进行校验,即发出去以后就不管了,他、它并不
关心接收方是否收到了数据,如果两次发送的间隔时间很短,那么接收方收到的就是大的数据包,也就是把几次
发送的数据作为一个数据包,因此出错;
2、TCP/IP协议方式下,如果要实现一对多,只能够在SERVER端实现,采用循环,发送到每一个接收端;
3、如果要实现用UDP发送较大的数据包,可以先将数据包分解成较小的数据包,然后按序号依次发送,每次接收端
接收到数据后,给发送方返回一条确认信息,在收到接收端的确认信息后,继续发送下一个数据包。
4、网络语音传输采用UDP较为合适;
5、TCP/IP对于数据量无限制,而UDP协议每次只能传输2K以内的数据。
 
我也在做,好像不太好用,哪位指导一下!
 
TNMUDP有一个非常奇怪的问题,那就是放在form上,编译后exe独立运行,不退出程序计算机就不能重新启动!!!不知大家试过没有。在form.close事件中写上 tnmudp1.free;也是没有用!请高手指教!!
 
这个是NDP控件本身的bug
 
nmudp发送数据后既然不管对方是否收到,可是当网络不通时发送数据为何会出错?
 
真是怪,现在DFW里居然还有自己不知道就乱说一通的人,真是人言可畏.
楼主还是查资料和写DEMO测试吧,信了这些人的死都不知道怎么死的,上面的答案大部分都不对,而且很容易被误导,根据我的经验,可能自己写些测试程序更容易理解些,你问的问题都是应该从书本中掌握的基础知识,问到了没什么用,要系统的学习,
另外记得不要用TNMUDP,虽然我没用过,不过大家对它的口碑都有蛮烂.
 
厉害,从01年讨论到04年。
 
可以用Ics控件包中的wsocket组件,它也支持udp,另外, 还有vb的winsock active控件,也是可以用udp的,不会出现关机关不了的问题。
 
后退
顶部