【问题标题】:Programming an Interactive Server Console on Windows在 Windows 上编写交互式服务器控制台
【发布时间】:2012-04-23 02:58:17
【问题描述】:

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

如果您不理解,这与Interactive console programming for c/c++? 几乎相同,但适用于 Windows。

【问题讨论】:

    标签: c windows console-application


    【解决方案1】:

    解决这个问题有两种通用的方法:

    1. 在一个线程中运行整个服务器,并通过使用异步 IO 的主循环来控制线程,以确定事件(传入数据包、控制台按键等)的来源并处理它们。

      在 unix 系统中,您有 select() 调用和一些更高级的变体,例如 poll() 和 epoll()` 在一些更高版本的 unix/linux 版本中。在 Windows 中,他们称之为Overlapped IO

    2. 让单独的线程管理服务器的不同部分。通常的方法是,每个客户端一个线程,加上一个控制台线程。在这里,您必须明智地使用mutexescondition variables 等,而不是尝试编写主循环,以确保线程不会互相踩到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      相关资源
      最近更新 更多