当前位置:  开发笔记 > 运维 > 正文

TCP与UDP - 使用两者产生的问题

如何解决《TCP与UDP-使用两者产生的问题》经验,为你挑选了1个好方法。

当我学习各种技术时,我经常会想到我经常使用的应用程序如何实现这些东西.我和一些FPS一起玩了几个MMO.我做了一些环顾四周,发生在这个线程上:

http://www.gamedev.net/topic/319003-mmorpg-and-the-ol-udp-vs-tcp

我一直看到,当允许丢失一些数据包时UDP会闪耀.涉及的开销更少,更新更快.在环顾四周并阅读各种文章和主题之后,我发现通常会使用UDP完成字符定位.像FPS这样的游戏通常会使用UDP完成,因为发生了所有快速变化.

我已经多次看到有人指出同时使用UDP和TCP时可能发生的问题.这些问题可能是什么?新手程序员大多会遇到这些问题吗?在我看来,使用UDP和TCP的组合是理想的,获得每个的优点.但是,如果将两者结合使用会增加代码的大量复杂性以处理所引起的问题,那么在某些情况下可能不值得.



1> Stellarator..:

许多游戏一起使用UDP和TCP.由于每个游戏都必须将玩家的行为传递给每个人,因此必须以某种方式完成.它现在取决于你想要制作什么样的游戏.在RTS中,TCP肯定会更加明智,因为你不能丢失有关你的对手运动的信息.在RPG中,跟踪游戏的每一秒都不是非常重要.

底线是,如果数据已到达客户端,在任何情况下,(位置更新,升级ASO),你必须通过TCP发送,或者,你实现自己的可靠的基于UDP协议.我已经构建了很多用于游戏的网络堆栈,我不得不说,你使用的内容取决于用例以及你想要实现的目标.我主要通过UDP 做心跳,所以远程服务器/客户端知道我还在那里.UDP的问题是,数据包丢失而不重新发送.如果数据包丢失,它将永远丢失.你必须考虑到这一点.如果您通过UDP发送一些信息,则必须是允许丢失的信息.其他一切都通过TCP进行.

疯狂开始了.如果你想从两者中获得最大收益,你将不得不适应它们.TCP有时会很慢,如果数据包碎片化或者没有按顺序到达,则必须等待,直到操作系统重新组装它们为止.在某些情况下,最好在UDP之上构建自己的可靠协议.这样您就可以完全控制流量.大多数防火墙不会丢弃UDP或其他任何东西,但与TCP一样,任何未声明为安全的流量(打开端口,数据包重定向,aso.)都会被丢弃.我建议你阅读维基百科上的TCP和UDP和UDP-Lite文章,然后决定你要用哪些文章.AFAIK Battle.net使用两者的组合.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有