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

Вниз

Обработка ошибок (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.036 c
1-1105791814
L.E.E.
2005-01-15 15:23
2005.01.30
Карта города с объектами - домами?


1-1106205535
snake_r
2005-01-20 10:18
2005.01.30
TEdit и свойство Text


1-1105966695
Mate_ru
2005-01-17 15:58
2005.01.30
Перенос слов


9-1098387885
OranZevjii
2004-10-21 23:44
2005.01.30
Вывод спрайтов


9-1098851964
Malefic
2004-10-27 08:39
2005.01.30
AsphyreInput и PowerInput: Как с ним работать?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский