Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Вниз

Обработка ошибки TClientSocket   Найти похожие ветки 

 
Alibaba   (2002-07-03 12:29) [0]

Всем привет!
Такая проблема - необходимо корректно обработать ситуацию, когда сервер отсутствует.
Нарисовал простого клиента:

procedure TfrmMain.StartClient;
begin
clnSocket.Port := 1025;
clnSocket.Address:="10.44.90.14";
try
clnSocket.Open;
except
ShowMessage("Отсутствует сервер. Код-1.");
end;
end;

procedure TfrmMain.clnSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ShowMessage("Отсутствует сервер. Код-2.");
end;

Коды поставил что-бы знать в каком месте сработало.

Так вот, если сервера нет - срабатывает "Kод-2"
и еще вываливается сообщение "Asynchronous socket error 10061"
Подскажите плиз, в чем дело?


 
Digitman   (2002-07-03 12:46) [1]

Работает это как и положено, так идолжно быть в станд.реализации TCustomWinSocket.
Никаких непонятных "дел" здесь нет. Метод Open() никогда не возбуждает исключений, связанных с недоступностью сервера - на то есть событие OnSocketError(), в обработчике которого и можно как раз реализовать требуемую тебе логику сетевых событий клиента


 
Fredericco   (2002-07-03 12:52) [2]

В обработчике OnSocketError напиши Abort чтобы не появлялось "Asynchronous socket error 10061".


 
anatol   (2002-07-03 12:56) [3]

TCustomSocket.OnError
Occurs when the socket fails in making, using, or shutting down a connection.

property OnError: TSocketErrorEvent;

Description

Write an OnError event handler to respond to errors that arise with the socket connection. Set the ErrorCode parameter to 0 if the OnError event handler successfully deals with the error condition, to prevent an ESocketError from being raised.

Esli ne poneatno nujno ustanovit" ErrorCode := 0; 4tobi vi ne polu4ili vashe "Asynchronous socket error 10061".



 
Alibaba   (2002-07-03 13:00) [4]

Всем спасибо!
> Digitman : За теорию - век живи век учись!
> Fredericco : За практику - Поставил свой код в OnSocketError, затем - Abort и все супер! Никаких дополнительных сообщений не возникает.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
4-27283
Storonnik
2002-07-19 18:33
2002.09.09
Как послать приложению нажатие какой-нибудь клавиши?


1-27002
lipskiy
2002-08-27 10:59
2002.09.09
Это у меня глюки, или действительно глюки? (TToolBar и сепаратор)


1-26962
Grande
2002-08-29 13:11
2002.09.09
Проект Cbuilder в Delphi7


1-27049
Nikola62
2002-08-27 13:29
2002.09.09
Как перечеркнуть линией TPanel


1-27114
qqqqqqq
2002-08-29 05:51
2002.09.09
Что такое дамп? (памяти, паролей)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский