Написание неблокирующей функции чтения стандартного ввода для Windows? - PullRequest
0 голосов
/ 11 января 2012

Я пишу программу для Windows, которая выполняет отношения сервер-клиент.

Я использую select(), чтобы получать запросы клиента, а также команды пользователя (те, что находятся за сервером, физически) от стандартного ввода.

Кажется, что select() работает для запросов клиента, но не для ввода с stdin.

Кроме того, мне не удается ReadFile() из stdin, потому что последний не контролируется, другими словами, это не FD_SET(stdin, (fd_set)myread_fds). Есть ли способ получить вход от stdin неблокирующим способом?

Ответы [ 2 ]

1 голос
/ 11 января 2012

Ваш план для вашего сервера очень сложный.Многие хорошие программисты пытались это сделать и в конце концов сдались.Даже если вы можете заставить его работать, он не будет масштабируемым.

Лучшим планом, IMHO, является написание отдельного приложения, которое следит за командами «пользователь сервера».Это приложение, назовите его SUG (пользовательский интерфейс сервера) является другим клиентом сервера.Сервер следит за обоими запросами от SUG и удаленных клиентов одинаково.Это упрощает проектирование сервера, а графический интерфейс не влияет на производительность сервера.

1 голос
/ 11 января 2012

Я думаю, что вы ищете не select (), а WaitForMultipleObjects (), который может ожидать как сокеты, так и консольный ввод / вывод.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...