Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TServerSocket. Что это за странные хенделы -1 ? [D5, WinME]


SergP ©   (2003-08-24 15:22:00) 

В процессе работы в TClientSocket возникают странные хенделы (-1).К тому же постепенно их становится все больше и больше. Эти соединения уже не используются и должны быть закрытыми, т.е. их вообще не должно быть.
По идее при дисконекте соединение должно исчезнуть, а при возникновении ошибки работает такой обработчик:

procedure TForm1.ServerSocketClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
socket.close;
ErrorCode:=0;
end;

Пока не могу вычислить когда они возникают, но может кто-нить что-нить подскажет отчего некоторые соединения не исчезают а остаются (но с хенделом -1)?


Digitman   (2003-08-25 13:41:00) [1]


> NikB


вот именно)


NikB   (2003-08-25 13:39:00) [2]

>Digitman
10x
Nado chitat source :)


Digitman   (2003-08-25 13:31:00) [3]


> NikB


внутри метода Socket.Close напрямую вызывается то, что тебе "советовали" ....так что разницы никакой


NikB   (2003-08-25 13:29:00) [4]

Ia ne ochen v delo, no v etom forume sovetovali plxzovat:

Socket.Disconnect(Socket.SocketHandle); // закроем гнездо


Digitman   (2003-08-25 13:29:00) [5]


> Reindeer Moss Eater


да у него из другой оперы проблема)

TCustomWinSocket.Close не вызывает метод TServerWinSocket.RemoveClient(), ибо последний вызывается лишь в TServerClientWinSocket.Destroy


Reindeer Moss Eater   (2003-08-25 13:14:00) [6]

Если есть NAT и если при разрыве соединения не посылается fin-пакет, то такое "дропнутое" соединение может висеть 24 часа. (Default value у cisco)


Digitman   (2003-08-25 08:47:00) [7]

рискни вместо
socket.close;
использовать
socket.free;


Наверх

Титульная страница Поиск, карта сайта Написать письмо