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

Вниз

Открытые порты! Трабл!!!   Найти похожие ветки 

 
csr ©   (2004-02-19 15:52) [0]

Есть многопоточная программа, работает на TidHTTP. После вызова TerminateThread винапи, сетевая активность прекращается, потоки умирают, но файервол показывает что несколько портов (HTTP) остаются открытыми. И были открыты они моей прогой. Вопрос: как закрыть открытые порты? Очень важно! Спсибо!!!


 
Verg ©   (2004-02-19 16:28) [1]


> Вопрос: как закрыть открытые порты?


1. Не открывать их
2. Не использовать TerminateThread

А дополнительные мои соображения по этому вопросу можно почитат здесь:
http://delphimaster.net/view/6-1077183962/


 
Digitman ©   (2004-02-19 17:16) [2]

рискну "потелепатить")

автор стартует поток и пытается в его контексте запросить гипертекст упомянутыми (блокирующими !) ср-вами ..

не дождавшись по каким-то причинам исполнения запроса (мало ли оных м.б.), автор ничтоже сумняшеся "лупит" потоку "по мозгам" вызовом TerminateThread, ибо при блокир.вызове иных способов "укротить" трэд явно нет ...

так ?


 
Digitman ©   (2004-02-19 17:18) [3]


> несколько портов (HTTP) остаются открытыми. И были открыты
> они моей прогой


и в этом никакого нонсенса нет - ты, "долбанув" по потоку TerminateThread"ом (хоть и грубо, но иначе не назовешь), потерял занятые им ресурсы !

"Уж сколько раз твердили миру .." (С)


 
Verg ©   (2004-02-19 19:05) [4]


> [2] Digitman ©   (19.02.04 17:16)
> рискну "потелепатить")
>
> автор стартует поток и пытается в его контексте запросить
> гипертекст упомянутыми (блокирующими !) ср-вами ..
>
> не дождавшись по каким-то причинам исполнения запроса (мало
> ли оных м.б.), автор ничтоже сумняшеся "лупит" потоку "по
> мозгам" вызовом TerminateThread, ибо при блокир.вызове иных
> способов "укротить" трэд явно нет
...


Строго говоря - есть способ. И "Индейцы" им пользуются.
Давай так, один поток вошел в нирвану по поводу, например, connect(s,...
Зато другой в это время может сделать closesocket(s).
На что тот, который не этот (записки кота плинтуса :))) немедля очнется от connect-а с причиной WSAENOTSOCK.


 
Digitman ©   (2004-02-20 15:50) [5]


> Verg ©   (19.02.04 19:05) [4]


согласен.
но это надо заранее предусмотреть ... в виде каких-то глобальных для всех заинтересованных потоков структур данных, хранящих инф-цию об открытых гнездах и пр.


 
csr ©   (2004-02-20 15:57) [6]

Дак ведь насколько я знаю, при вызове TerminateThread WinApi, я принудительно вызываю OnTerminate событие для текущего потока.... А вот это событие я ловлю и все занятые ресурсы освобождаю... Типа убиваю экземпляр TidHTTP и проч... ДАк в чем же дело?


 
Digitman ©   (2004-02-20 16:05) [7]


> Дак ведь насколько я знаю, при вызове TerminateThread WinApi,
> я принудительно вызываю OnTerminate событие для текущего
> потока


ох как ошибаешься !!

никакие ни OnTerminate ни прочие ф-ции/методы не вызываются - поток просто скоропостижно и покорно умирает по твоей  же команде


 
Digitman ©   (2004-02-20 16:07) [8]

ты станд.хэлп к этой ф-ции вообще-то читал ?


 
Verg ©   (2004-02-20 16:18) [9]

Да, кроме того, сокеты (любые, включая list-отвые), как "собственность" процесса а вовсе не потока, остаются жить как ни в чем не бывало. Отсюда и "незакрытые" порты.


 
csr ©   (2004-02-20 19:31) [10]

В док-ции это явно не написано... Дак что ж делать-то... Юзать Terminate метод класса потока - не могу, т.к. долго потоки убиваются, если их больше 100 ... А этой АПИ ф-цией - все быстро и без ошибок...


 
Rouse_ ©   (2004-02-20 19:39) [11]

Ну тебе ж дали совет. Делай closesocket а затем прибивай поток.



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

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

Наверх




Память: 0.49 MB
Время: 0.029 c
14-1080549980
Real
2004-03-29 12:46
2004.04.25
Борланд и Маздай - не сходятся даже на ниве математики???


4-1074855067
mr.Tim
2004-01-23 13:51
2004.04.25
еще раз про хуки (анти-кейлоггеры)


1-1081514472
Denis_Visma
2004-04-09 16:41
2004.04.25
Прогресс бар на процесс конекта...


3-1080629375
Daniel
2004-03-30 10:49
2004.04.25
создание DB класса


4-1077166914
@ac
2004-02-19 08:01
2004.04.25
Как определить, что винда русифицирована?