Главная страница
    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.057 c
3-1080732484
Lam
2004-03-31 15:28
2004.04.25
Вычитание таблиц


6-1077702231
_shark
2004-02-25 12:43
2004.04.25
Подскажите, создаю сервис и в нем TServerSocket соединится то


1-1081522538
acrona
2004-04-09 18:55
2004.04.25
Работа с другими программами


6-1077961868
KyRo
2004-02-28 12:51
2004.04.25
В чем ошибка при сканировании портов ClientSoket-om??


1-1081148741
zxcvb
2004-04-05 11:05
2004.04.25
Как в ячейки StringGrid сделать CheckBox?





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