【问题标题】:What is the best way to organise C++ Socket Server?组织 C++ Socket Server 的最佳方式是什么?
【发布时间】:2013-12-03 12:09:00
【问题描述】:

我想使用套接字在 C++ 上编写一个服务器应用程序。此应用程序是游戏服务器。 服务器接受来自客户端的连接并在整个会话期间保持这些连接。服务器和客户端都互相发送数据。 连接可能会保持很长时间。 除了发送和接收数据之外,服务器还进行大量数据处理。 服务器还将数据保存到硬盘。

您能告诉我组织这一切的最佳方式是什么吗? 为每个客户端连接创建一个线程好吗? 我可以以某种方式使用异步套接字吗? 关于这个主题(游戏服务器开发、服务器开发)有哪些值得阅读的文章?

谢谢!

【问题讨论】:

  • 可能没有“最佳”方式。有不好的方法,也有更好的方法,甚至是好的方法,但是您需要编写满足您的需求/要求的代码(最好使用其中一种好方法)。
  • 有多少客户?每个客户端的线程扩展性很差。如果你避免每个客户端线程,那么你应该使用异步套接字,这样你就可以在一个线程中处理多个客户端。

标签: c++ performance sockets architecture server-side


【解决方案1】:

您没有说您正在为哪个操作系统编写代码,但在 Windows 上最具可扩展性的方法是使用重叠 I/O 和 I/O 完成端口。这使您可以轻松扩展到数千个连接,而只需少量线程。

我已经编写了一些articles about how to use IOCP,其中包括用于一些简单服务器设计的 C++ 代码。这些可能有助于您了解该技术的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多