我正在编写一个执行服务器 - 客户端关系的Windows程序。
我正在使用select()
以便从stdin获取客户端的请求,以及用户的命令(服务器后面的命令)。
似乎select()
适用于客户端的请求,但不适用于来自stdin的输入。
此外,我没有成功ReadFile()
来自stdin
,因为后者未受到监控,换言之,它不是FD_SET(stdin, (fd_set)myread_fds)
。有没有办法以非阻塞的方式从stdin获取输入?
答案 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不会干扰服务器的性能。