我的祖国冷知识 我的祖国相关知识
7572023-09-09
大家好,为什么连接不了udp相信很多的网友都不是很明白,包括为什么不建议做udp也是一样,不过没有关系,接下来就来为大家分享关于为什么连接不了udp和为什么不建议做udp的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
本文目录
TCP是一种面向连接的、可靠的传输协议,UDP是一种无连接的、不可靠的传输协议。两者在设计之初就是针对两种不同的应用场景:UDP适用于实时应用,比如视频直播、网游,TCP适用于文件传输。
所以目前不存在UDP替代TCP的说法。
通俗来讲,直播时可能由于网络问题卡顿甚至中断,打游戏时你也可能鼠标连点几下人物都没反应(玩lol时还没见到对面的人就死了了解下?),但是等恢复通畅了不会重现你如何死掉(所以你丢掉的东西就丢了,UDP不会重发,这就是不可靠)。而传输文件必须确保文件完整(文件缺一部分那拿来有什么用嘛),所以网络出问题传输的内容丢失了就必须有个重传机制重发丢失的内容(确保数据完整,所以是可靠的)。
UDP再怎么改进,它最多也只能减少你看直播时卡顿的几率。(当然这不是看不起UDP,毕竟很多游戏都靠这个吃饭。想想要是换成TCP,咦。。。)
不过,万一什么时候IEEE(说错了别怪我,这些组织啊标准啊什么的最难记了,请大神赐教~)把它们结合在一起了呢?
TCP是传输控制协议,是一个可靠的面向连接的协议。它允许网络间两台主机之间无差错的信息传输。
UDP是用户数据报协议,它采用无连接的方式传输数据,也就是说发送端不关心发送的数据是否到达目标主机,数据是否出错等。收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。
这两个协议针对不同网路环境实现数据传输,各有优缺点。面向连接的TCP协议效率较低,但可靠性高,适合于网络链路不好或可靠性要求高的环境;UDP面向非连接,不可靠,但因为不用传送许多与数据本身无关的信息,所以效率较高,常用一些实时业务,也用于一些对差错不敏感的应用,例如QQ,在线观看视频就是采用UDP的协议!
建议你这样理解:TCP就像电话,首先要拨号来建立连接,需要等对方接通以后,才能通话。--所以TCP需要和对端把连接建立起来,才允许发送数据给对方。
UDP就像邮寄,并不管对方的地址是否有效,是否有人在家,直接把信放到邮筒就行了。
--所以UDP是没有连接的,发送方根本不管对端的情况,就直接发送了。
造成数据丟失!
建议把数据接收和数据解析分离,接收数据放入队列,然后直接返回,保证socket通讯不丢数据或者超时有单独线程或启用线程池来完成数据解析。
可以开启一个线程,专门收数据,收到数据放到缓冲区中或者队列中,这个过程应该是非常快的,肯定会快过一般的网络传输速度.然后再开一个线程来专门处理数据,数据处理一般会比较慢.这样一来,你就要权衡了,因为生产得快,消费得慢,必然导致内存占用疯涨.所以变成时间与空间的问题了.
OK,关于为什么连接不了udp和为什么不建议做udp的内容到此结束了,希望对大家有所帮助。