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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
1-1081648970
NND
2004-04-11 06:02
2004.04.25
-= Ошибки, ошибки и еще раз ошибки =-


7-1077650405
Pavel74
2004-02-24 22:20
2004.04.25
если ето doc то открыть его в worde а если ето pdf то в аcrob ...


6-1077634195
Denis555
2004-02-24 17:49
2004.04.25
трабла с TNMHTTP


3-1080750046
Максим
2004-03-31 20:20
2004.04.25
Нормализация БД


1-1081604542
Черный прапорщик
2004-04-10 17:42
2004.04.25
ActionManager и DLL





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