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

Вниз

ClientSocket в Com объекте - срочно Help   Найти похожие ветки 

 
adv   (2003-10-03 13:56) [0]

Подскажите, плз: не получается сабж. ClientSocket открываю в потоке, тип сокета ctNonBlocking, при вызове Synchronize(ClientSocket.Open) Com объект умирает быстро и без писка. Проблема проявляется только при переносе модуля в COM объект- в обычном приложении все работает. Заранее спасибо всем откликнувшимся.


 
Digitman   (2003-10-03 14:00) [1]

а зачем ? зачем синхронизировать метод ClientSocket.Open ? смысл ?


 
adv   (2003-10-03 14:45) [2]

От безысходности :-(. Уже не знаю в чем проблема, вот и извращаюсь


 
Polevi   (2003-10-03 14:51) [3]

цикл обработки сообщений есть в потоке ?


 
Digitman   (2003-10-03 14:59) [4]


> adv


для начала сделай так

procedure TMyThread.Execute;
begin
try
..... // здесь вся твоя кухня с гнездами и пр.
except
end;

end;

о результатах (падает COM-сервер после этого или перестал) доложишь)


 
adv   (2003-10-03 15:01) [5]

нет. Назначение приложения - постоянный опрос сервера, если пришла инфа, парсить, заполнять свойства COM объекта, чтобы сторонняя прилада (SCADA) считала эту инфу. 2 потока - один на прием инфы от сервера, другой на обслугу запросов хозяина (SCADA), можно конечно половить сообщения и попробывать определиться с ошибкой, но мне кажется что это где то на поверхности. Может кто знает где копать. Повторюсь но в обычном приложении все ок


 
Digitman   (2003-10-03 15:14) [6]

еще раз повторяю - ты заключил код Execute() в скобки try..except ? каков результат ?


 
adv   (2003-10-03 15:14) [7]

все заработало, большой сенкс. а что это могло быть? on E:Exception do MessageBox(0,PChar(E.Message),"Error",0); ничего не дало. еще раз спасибо.


 
Digitman   (2003-10-03 15:32) [8]

ну, положим, еще ничего не заработало)
ибо ты только обнаружил по моему настоянию, что COM-сервер твой падает из-за необработанного в потоке исключения

теперь - задача выяснить, кто или что является источником такого исключения ... и уж потом принимать адекв.меры

скорректируй код таким образом :

on E:Exception do
MessageBox(0,PChar( E.ClassName + " " + E.Message),"Error",0);

о том что ты увидишь в сообщении - доложишь дословно))


 
adv   (2003-10-06 04:29) [9]

Да нет - заработало. А исключение try Socket.open except on E:Exception do MessageBox(0,PChar(E.ClassName + " " + E.Message),"Error",0); end; не ловит. Убрал Try except - работает. ничего больше не менял. ЧТО ЗА ??? Кстати подобное поведение обнаружил при попытке написать службу на Delphi (пришлось на VС писать), а еще он часто в обоих случаях валиться с исключением ядра D6. Это мой глюк или фича D6?


 
Digitman   (2003-10-06 08:14) [10]


> ЧТО ЗА


стук в подвале) .... что еще сказать ?


> при попытке написать службу на Delphi


а зачем ты организуешь в службе еще один доп.код.поток ? объясни
код службы и так уже выполняется в отдельном код.потоке


 
adv   (2003-10-06 08:53) [11]


> а зачем ты организуешь в службе еще один доп.код.поток ?

Хотел сделать: первый поток опрашивает сетевой ресурс на предмет появления новых файлов и переписывает их на локальный ресурс. Второй - рассылает обнаруженные файлы в локальном ресурсе по коннектам. А сама служба рулит потоками (лог ошибок, перезапуск потоков и прочее).


 
Digitman   (2003-10-06 09:16) [12]

в принципе все это вполне организуемо и в рамках одного и того же потока службы...



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

Форум: "Сети";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
6-11691
Manulo
2003-10-01 19:49
2003.12.04
Client/ServerSocket


4-11752
Demetrius2003
2003-10-04 17:49
2003.12.04
Оброботка OnClick


6-11661
veresk
2003-10-11 01:17
2003.12.04
не работает logonuser


6-11685
Volcano
2003-10-04 17:12
2003.12.04
checksum


6-11658
Геннадий
2003-10-08 12:43
2003.12.04
Как программно изменить настройки TCP/IP (в частности, IP-адрес)?





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