![]() |
|
Модераторы: feodorv |
![]()
|
|
| Gram02 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.6.2006 Репутация: нет Всего: нет |
есть такой поток
так вот проблема в том что он после приема 1 пакета сокет не блокируется(recv должен как я понимаю остановить поток и ждать следующий пакет) и поток спамит клиента в результате чего последний его посылает и конект закрывается создание сокета s = socket(AF_INET,SOCK_STREAM,0); bind(s,(sockaddr*)&addr,sizeof(addr)); listen(s,SOMAXCONN); sc = accept(s,0,0); |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Вообще-то ты его сам делаешь асинхронным.
ULONG ul = 0; int result; result = ioctlsocket(s,FIONBIO ,&ul); Если хочешь чтобы сокет был блокирующим, то выкини этот код из своей программы, ведь при создании сокета - он по умолчанию блокирующий. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Ошибся, если бы ul = 1, тогда бы он был асинхронным.
Может быть несколько причин, по которым сокет становится неблокирующим: 1) Вызов ф-ии WsaAsyncSelect (и подобных) 2) Вызов ioctlsocket с параметром 1 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |