| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > socket (accept) |
| Автор: fantast 25.5.2007, 20:46 |
| привет всем. вопрос в том, как мне изменить свойства accept так, чтобы он не ждал (если очередь пуста) когда ктонить обратится к серверу с запросом, а сразу выдовал, что желающих нету. спасибо |
| Автор: dumb 26.5.2007, 11:25 | ||
перевести сокет в неблокирующий режим(nonblocking mode).
только нужно иметь ввиду, что изменится не только работа accept, но и работа всех остальных функций. |
| Автор: fantast 26.5.2007, 20:44 |
| супер, спасибо |
| Автор: GremlinProg 26.5.2007, 22:43 |
| можно и не отключать блокировку (иногда без неё муторно...), используем функцию WSAEventSelect, которая ассоциирует объект ожидания WSAEVENT с необходимым сигналом, в том числе и FD_ACCEPT. Чтобы проверить, сработало ли событие исполльзуем WSAWaitForMultipleEvents с dwTimeout = 0. Только здесь, в отличии от обычных событий (CreateEvent) нельзя создать событие-автомат (может и можно, не нашел), которое само сбрасывается после отработки, т.е. нужно самим его сбрасывать (WSAResetEvent) |
| Автор: dumb 27.5.2007, 04:22 | ||
GremlinProg,
|
| Автор: GremlinProg 27.5.2007, 12:39 | ||
да, dumb, действительно, на слушающем сокете мы из него обычно не читаем, поэтому и проблем нету. Но на клиентском сокете - и читаем и пишем. Правда к accept это не имеет отношения, тем не менее, для полноты изложения надо дополнить
|