我正在努力实现我在UDP上工作的简单但非常有效的多线程服务器的想法。主要目标是游戏(类似)应用程序,但如果它也可以用于其他目的,那将是很好的。
我想使用此API /技术等
对于服务器 - 客户端通信的策略,我想到了这样的事情: 每个程序都有两个套接字 - 一个用于侦听指定端口,另一个用于向服务器/其他客户端发送数据。两个套接字都运行在不同的线程上,这样我就可以同时读取和发送数据(排序),等待数据的方式不会破坏我的性能。将有一个主服务器,其他客户端将直接连接到该服务器。客户端将仅发送其数据并直接从服务器接收数据。
现在我有一些问题:
另外:它应该同时适用于2-4名玩家,我不打算在目前更多地使用它。
答案 0 :(得分:0)
直观地说,从多线程目的来看,Linux + Pthread将是一个很好的组合。大量关键任务系统正在运行该组合。但是,当我们来到std :: thread时,具有平台依赖性质是一个很好的功能。当然,如果窗口方言中有一些难闻的气味,MS将来会纠正它们。但是,如果我是你,我一定会选择Linux + std :: thread组合。选择Linux over Windows是一个不同的主题,不需要在这里发表评论(关于服务器开发的观点)。 std :: thread为您提供了一组很好的功能,但具有pthreads的强大功能。
关于UDP,你既有利也有弊。但是,我想说如果你打算公开你的服务器,你也必须考虑网络防火墙。如果您可以解决UDP(数据包重新排序,丢包恢复)的固有传输层问题,那么在大多数情况下UDP服务器都是轻量级的。
取决于您的游戏,您需要决定发送邮件的频率。我无法发表评论。
此外,请更加重视数据通信的额外安全性。你的服务器迟早会被黑客入侵。这只是时间问题。