为Windows编写非阻塞stdin读取函数?

时间:2012-01-10 21:24:41

标签: c++ windows

我正在编写一个执行服务器 - 客户端关系的Windows程序。

我正在使用select()以便从stdin获取客户端的请求,以及用户的命令(服务器后面的命令)。

似乎select()适用于客户端的请求,但不适用于来自stdin的输入。

此外,我没有成功ReadFile()来自stdin,因为后者未受到监控,换言之,它不是FD_SET(stdin, (fd_set)myread_fds)。有没有办法以非阻塞的方式从stdin获取输入?

2 个答案:

答案 0 :(得分:1)

我认为你所寻找的不是select()而是WaitForMultipleObjects(),它可以等待套接字和控制台I / O.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx

答案 1 :(得分:1)

您的服务器设计计划非常具有挑战性。许多优秀的程序员已经尝试过并最终放弃了。即使你可以使它工作,它也不会具有可扩展性。

一个更好的计划,恕我直言,是编写一个单独的应用程序,它负责“服务器用户”命令。这个应用程序,称之为SUG(服务器用户gui)是服务器的另一个客户端。服务器以相同的方式处理来自SUG和远程客户端的两个请求。这使得服务器设计更简单,并且GUI不会干扰服务器的性能。