2012-04-23 102 views
0

我正在编写一个具有多人功能的游戏,而且我需要编写一个服务器控制台。一个简单的“从标准输入 - >处理输入 - >写入输出”循环读取将不起作用,因为服务器必须正在运行,并且可能在服务器管理员在服务器控制台中输入时打印日志消息。我已经看到了用于UNIX/Linux系统的tecla和Editline库,但是没有发现任何用于Windows的东西。这类事情有哪些好的库?在Windows上编程交互式服务器控制台

如果你不明白,这几乎与Interactive console programming for c/c++?相同,但是对于Windows。

回答

0

一般有两种方法解决这个问题:

  1. 在一个线程中运行整个服务器,并与使用异步IO来确定主回路控制线程,事件(进入的数据包,主机按键等)来自并处理它们。

    在unix系统中,您可以调用select()调用,还可以使用一些更高级的变体,例如poll()和epoll(),在某些后来的unix/linux版本中。在窗户中,他们称之为Overlapped IO

  2. 有单独的线程管理服务器的单独部分。通常的做法是,每个客户端一个线程,再加上一个控制台线程。在这里,不要试图编写一个主循环,你必须明智地使用mutexes,condition variables等来确保线程不会踩在彼此的脚趾上。

相关问题