![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClientSocket->ServerSocket. Не вызывается ClientSocketError [D5]
alex_ustasu © (2002-10-11 12:02:00)День добрый. Работаю с D5 и его winsock-компонентами.Чтобы проверить активен ли сервер, пытаюсь с ним соединиться Client-ом. При отсутствии сервера, возникает, естественно, ошибка, но Обработчик ClientError не вызывается, а сначала вызывается ClientSocketDisconnect, а затем в модуле OnLookup возникает ошибка с выдачей сообщения на экран(код 11001 WSAHOST_NOT_FOUND, как я понял и должно быть).Можно ли это обойти, обходясь только использованием ClientSocket?
alex_ustasu (2002-10-11 15:10:00) [1]Нашел одну статейку Кариха Николая, который утверждает, что при открытии Socket-а, ClientSocketError при ошибке действительно не вызывается. Надо использовать try ... except. Попробую...
alex_ustasu (2002-10-11 13:44:00) [2]Цепочку проследил такую от своего СlientSocketDisconnect(почему-то он вызывается при ошибке в LookUp): возврат в
TCustomSocket.Event->TAbstractSocket.DoEvent->TCustomWinSocket.Event->TCustomWinSocket.Disconnect->TCustomWinSocket.CMLookupComplete. Он уже выдает сообщение об ошибке с помощью raise ESocketError.CreateResFmt(@sWindowsSocketError, [SysErrorMessage(Message.AsyncError), Message.ASyncError, "ASync Lookup"]).->TCustomWinSocket.WndProc вызывает еще Application.HandleException, который выдает еще одно сообщение об ошибке.
Т.е. LookUp(как я понял) завершается с ошибкой (зачем тогда надо выполнять Disconnect, мне непонятно), но мой обработчик не вызывается. А дальше пошло-поехало...
Алексей Ким (2002-10-11 12:19:00) [3]ну... ну... пройдись дебагером,
посмотри если есть связь между tclientsocket и clientsocket1error итд а вообще... это ошибка или exception?
alex_ustasu (2002-10-11 12:16:00) [4]Конечно. Говорю же, не вызывается ClientSocketError, вот в чем дело.
Алексей Ким (2002-10-11 12:13:00) [5]errorcode:=0?