Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
1

Поведение Winsock при зависании клиента

25.10.2010, 05:05. Просмотров 894. Ответов 5
Метки нет (Все метки)

Приветствую.
Заметил странность в поведении Winsock...
Есть серверная машина, есть клиентская.
К серверу подключаться могут сразу много клиентов - для каждого создается свой экземпляр винсока. Но это не столь важно.
Дело в том, что если отключить клиента при помощи холодной перезагрузки (ресетом), то серверный винсок не генерирует никакого события (ни Close, ни Error)... По этому приходится запоминать время последнего обращения клиента и смотреть - если какой-то интервал превышен, то на сервере выключать.
Может быть, я чего-то не углядел? По идее должно событе Error генерироваться...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2010, 05:05
Ответы с готовыми решениями:

Как сделать чтобы сервер на winsock ожидал клиента на любой порт??
Как сделать чтобы сервер на winsock ожидал клиента на любой порт??

Проблема с зависающими процессами при работе с winsock
Есть небольшая проблема: программа отсылает уведомления через Winsock, все...

winsock сам соединеняет пакеты при получении или отправлении. как этого избежать
Привет! короче проблема в том что когда посылаешь несколько пакетов подряд то...

Winsock. При отправке почты: Need to authenticate via POP3 first / Bitte erst per POP3 anmelden
Привет! пытаюсь использовать winsock для отсылки мыла с удаленного компа...

Не приходят сообщения от клиента при неблокирующем режиме сокета \winsock
Привет, хочу реализовать простой обмен сообщениями в локальной сети, с...

5
XPraptor
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
25.10.2010, 12:34 2
У операции есть таймаут, при ресете сгенерится именно это событие вот по нему и определишь для кого таймаут вышел.
0
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
25.10.2010, 16:33  [ТС] 3
У какой операции? Можно немного подробнее?
0
XPraptor
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
25.10.2010, 18:57 4
Это если как ты сказал Reset-ом бахнули:
Const sckNetReset = 10052 (&H2744)
Member of MSWinsockLib.ErrorConstants
Connection has timed out when SO_KEEPALIVE is set

А это если Таймаут вышел к чертям собачьим:
Const sckTimedout = 10060 (&H274C)
Member of MSWinsockLib.ErrorConstants
The attempt to connect timed out
0
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
26.10.2010, 02:57  [ТС] 5
Спасибо.
0
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
16.11.2010, 00:38  [ТС] 6
Как я понял без апишек здесь не обойтись...
Ну да ладно, пусть даже с ними...
Когда вызывать функцию WSAGetLastError() (вроде она, если не ошибаюсь)?
Как мне winsock сообщит, что что-то не так?
Повторюсь - событие Error не возникает.
0
16.11.2010, 00:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2010, 00:38

Непонятное поведение winsock
Есть клиент-серверное приложение на протоколе TCP на синхронных сокетах. И вот...

Реализация консольного клиента на WinSock
Здравствуйте. Пишу консольного клиента на WinSock program Project2; ...

Клиент сервер Winsock + SDL. Форма клиента зависает
Проблема клиета: Форма SDL зацикливаеться циклом while и создается менюшка с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru