让我们得到一些事实:
> UDP不可靠.永远.
在某些情况下,UDP可能特别有损;例如如果存在网络拥塞,速率限制或流量分析,或者如果UDP消息大小大于MTU.
> UDP广播仅适用于您的本地网段.互联网路由器通常不允许广播进一步传播.这真的限制了它的有用性.
> UDP组播可能是一种可能性,除了它也被阻止.
所以这可能让你有两个主要的可能性:
>从您的服务器到每个客户端的UDP点对点消息传递.
> TCP从服务器到每个客户端.
另一种可能性是使用UDP或TCP的某种对等网格通信,但是这变得非常复杂.不要去那里,除非你真的需要,真的知道你在做什么.
所以你的问题.
Should I use UDP,both or am I just thinking completely wrong about this?
我建议在服务器和每个客户端之间使用TCP,因为它是最简单的.为了进一步简化,每个客户端使用多个TCP连接,以避免复用多个“对话”单个套接字.
网络性能不是最佳的,但是它的应用可能会很好.而且我怀疑这是您想要花费所有开发人员时间的应用程序的一部分.
当您达到工作应用程序(客户端和服务器端)的位置,并且有人使用它时,您可能会发现(或不是)网络是主要的瓶颈和用户不满意的原因.然后,您将看到优化应用程序版本2.0中的通信.
当您实现版本2.0(或3.0 …)来解决可扩展性时,您将需要从依赖于单个服务器的方式移动.简单地说,如果你有N个客户端,N不断增加,那么在某个时候单个服务器将无法应付.应用程序设计中的其他东西也可能是有问题的.例如,在游戏应用程序中,您不能向所有其他玩家发送关于每个玩家的持续更新…玩家人数不断增长.但请注意,这些问题在很大程度上与您使用的网络协议无关.