1

我正在为在线回合制游戏编写 tcp 服务器。我已经使用 php 套接字编写了一个原型,但想转向 C++。我一直在研究流行的网络库(ASIO、ACE、POCO、LibEvent),但目前还不清楚哪一个最适合我的需求:

1) 连接是持久的(以分钟为单位),服务器必须能够处理 100 多个同时连接。

2)连接必须能够维护状态信息(用户登录信息)。[我的 php 原型目前要求每个客户端请求都包含登录信息]

3) 可选且最好是多线程的,但只有一个进程。不希望每个连接有 1 个线程,而是有固定数量的线程在所有打开的连接上工作。


我倾向于 POCO 的 TCPServer 或 Reactor 框架,但不确定它们是否符合我的要求。我认为 Reactor 是单线程的,而 TCPServer 强制执行 1:1 线程/连接。我对么?


在任何一种情况下,我都不完全确定如何完成将登录信息与特定连接与随机连接的最重要任务。

4

2 回答 2

5

Boost.Asio 应该满足您的要求。反应器队列可以由多个线程提供服务。使用异步方法将使您能够设计为所有连接提供服务的固定数量的线程。

如果您不熟悉该库,教程和示例可能是最好起点

于 2011-02-12T14:53:11.907 回答
0

You might also take a look at MUSCLE, a multi-user networking library and server I wrote with this sort of application in mind. It's BSD-licensed, handles hundreds of users, and includes a server-side database mechanism for storing and sharing any information you want the clients to know about each other. The server is single-threaded by default, but I haven't found that to be a problem in practice (and it's possible to extend the server to be multithreaded if that turns out to be necessary).

于 2011-02-12T16:55:20.727 回答