我正在为Windows编写一个执行服务器-客户端关系的程序。
我使用select()是为了从标准输入中获取客户机的请求,以及用户的命令(物理上位于服务器后面的命令)。
似乎select()适用于客户端的请求,但不适用于来自标准输入的输入。
此外,我无法从stdin成功ReadFile(),因为后者不受监视,换句话说,它不是FD_SET(stdin, (fd_set)myread_fds)。有没有办法以非阻塞的方式从标准输入中获取输入?
发布于 2012-01-11 07:08:25
您的服务器设计计划非常具有挑战性。许多优秀的程序员都曾尝试过,但最终放弃了。即使你能让它工作,它也不会是可伸缩的。
一个更好的计划,IMHO,是编写一个单独的应用程序,它负责“服务器用户”命令。该应用程序称为SUG (服务器用户gui ),是服务器的另一个客户端。服务器以相同的方式处理来自SUG和远程客户端的两个请求。这使得服务器设计变得更简单,并且GUI不会影响服务器的性能。
发布于 2012-01-11 05:28:56
我认为您正在寻找的不是select(),而是WaitForMultipleObjects(),它可以等待套接字和控制台I/O。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx
https://stackoverflow.com/questions/8810709
复制相似问题