C++ 用于游戏(和其他任务)的简单而有效的UDP服务器策略
我试图实现我的想法,即在UDP上工作的简单但非常有效的多线程服务器。主要目标是用于游戏(类)应用程序,但如果它也可以用于其他用途,那就太好了 我想使用这个API/技术等C++ 用于游戏(和其他任务)的简单而有效的UDP服务器策略,c++,multithreading,sockets,client-side,C++,Multithreading,Sockets,Client Side,我试图实现我的想法,即在UDP上工作的简单但非常有效的多线程服务器。主要目标是用于游戏(类)应用程序,但如果它也可以用于其他用途,那就太好了 我想使用这个API/技术等 STD::多线程的线程,因为它是C++标准的一部分,它应该是未来的证明,而且我看到它既简单又用C++工作得很好。 BSDSock(Linux)和WinSock2(Windows)。我将创建一个名为Socket的抽象类,并为每个平台(Linux-BSD、Windows-WinSock)创建实现本机API的派生类。然后我将使用基类
另外:它应该可以同时与2-4个播放器配合使用,目前我不打算再与其他播放器配合使用。直觉上,从多线程的角度来看,Linux+Pthread将是一个很好的组合。大量的任务关键型系统正在这种组合上运行。然而,当我们谈到std::thread时,具有平台依赖性是一个很好的特性。当然,如果windows方言中有一些异味,微软将来会纠正它们。但是,如果我是你,我肯定会选择Linux+std::thread组合。选择Linux over Windows是一个不同的主题,这里不需要评论(从服务器开发的角度)。thread为您提供了一组很好的特性,同时还具有pthreads的强大功能 关于UDP,您有其优点和缺点。但是,我要说的是,如果你打算公开你的服务器,你也必须考虑网络防火墙。如果您能够解决UDP(数据包重新排序、丢失数据包恢复)固有的传输层问题,那么UDP服务器在大多数情况下都是轻量级的 这取决于你的游戏来决定你需要多久发送一次信息。我不能对此发表评论
此外,请更加认真地注意数据通信的额外安全性。你的服务器迟早会被黑客入侵。这只是时间问题 要获得独立于操作系统的功能,您应该查看或。另外,请试着一次问一个问题,因为这是你的问题,而且范围很广@πάνταῥεῖ - 是的,我意识到使用像boost这样的lib会更容易,也会更好,但我想为自己学点东西,写这样的东西会给我一些关于这个主题的内部知识和经验。我正在尝试做一些跨平台的东西(在Linux和windows上),我想使用一个lib/API来实现这一点。所以你说在linux和windows上使用STD::thread会更好,对吗?2.UDP停留,因为它将是实时多人游戏,所以我需要速度。一些数据丢失是可以接受的。3.至于安全性,我计划它是一个小游戏,也许不会有太多的ppl会玩,所以现在它不是大问题。我认为它不会那么受欢迎;)不过我想说的是,这对未来的关注是有好处的。通常情况下,使用windows线程很糟糕。至少从服务器应用程序的角度来看。不管是windows线程还是std::thread,尽可能忽略服务器的windows。如果它是windows中的std::thread,那么它最终应该访问windows操作系统级别的功能。在服务器应用程序中使用Windows有很多实际失败的例子。@ SARGERAN< <代码>:ST::VS C++ 2013中的线程< /COD>实现应该是正确的。ῥεῖ 听到这个消息真是太好了。