Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

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

 
Argentum   (2004-11-06 15:58) [0]

Если я в обработчике onError просто пишу:
ErrorCode:=0

Но что реально происходит с соединением? Продолжает работать?

Если я хочу при любой ошибке закрывать сокет, то можно ли написать так:

ErrorCode:=0;
ClientSocket1.Active:=False

Будет ли всё работать правильно? Т.е. сокет закроется и выполниться событие onDisconnect (если до этого было соединение).


 
Verg ©   (2004-11-06 17:43) [1]


> ErrorCode:=0;
> ClientSocket1.Active:=False


Socket.Close

А если совсем правильно, то

ErrorCode := 0;
if Socket.Handle <> INVALID_SOCKET then
 Socket.Close;

Где Socket - это именно тот параметр, который передают тебе в событии, а не что-то другое.


> Но что реально происходит с соединением? Продолжает работать?
>


Само соединение либо еще вообще не установлено, либо уже разорвано.
Дескриптор сокета остался живым.

Socket.Close; делается в угоду компонентам TClientSocket, ибо в некоторых ситуациях связанных с принудительным закрыванием еще неустановленного соединения (прерываение попытки соединения, по таймауту, например) они сами (ClientSocke1.Active = false) "забывают", а точнее сказать считают почему-то ненужным, освобождать системный дескриптор сокета. Что приводит к нехорошему явлению - утечка системных ресурсов.


 
Argentum   (2004-11-08 16:40) [2]

Verg

А если совсем правильно, то

ErrorCode := 0;
if Socket.Handle <> INVALID_SOCKET then
Socket.Close;


Компилятор говорит, что
if Socket.Handle <> INVALID_SOCKET then
"comprasion always evaluates to true" - есть смысл в этом сравнении?


 
Verg ©   (2004-11-08 20:31) [3]


> Компилятор говорит, что


Правильно говорит - надо SocketHandle



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

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
1-1105454109
odessey
2005-01-11 17:35
2005.01.30
А если принтеров несколько. Как назначить нужный?


4-1102415596
maxistent
2004-12-07 13:33
2005.01.30
Контакты COM-порта...


14-1105327570
Думкин
2005-01-10 06:26
2005.01.30
С Днем Рождения! 10 января


1-1105614904
вратарь
2005-01-13 14:15
2005.01.30
Шифрование


3-1104208560
urmat
2004-12-28 07:36
2005.01.30
Как скопировать таблицу из одной базы Access в другую ?