Форум: "Сети";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
ВнизTServerSocket в TService Найти похожие ветки
← →
Newfrost (2007-02-26 08:52) [0]Добрый день, уважаемый ALL, возник такой вопрос: пишу сервис, который должен общаться с клиентскими машинами по сети, кидаю на "форму" сервиса компонент TServerSocket, и задаю обработчики. Порт открывает как положено, но ни одно из событий не срабатывает(( С какими параметрами нужно запустить полученный экзешник, чтобы он стартанул как сервис (чтобы можно было отлаживать)
(Delphi 2006, Win Vista), но те же проблемы возникали и на других виндах (тестировал на XP и 2003)
Всем заранее спасибо!!!
← →
SergGG © (2007-02-26 10:54) [1]ExeName /Install
← →
Сергей М. © (2007-02-26 10:56) [2]
> С какими параметрами нужно запустить полученный экзешник,
> чтобы он стартанул как сервис (чтобы можно было отлаживать)
Какое отношение это имеет к
> ни одно из событий не срабатывает
?
Ты уж сначала разберись досконально с регистрацией и спецификой работы сервисов как таковых и только потом начинай "пичкать" свои сервисы конкретной функциональностью, в т.ч. TServerSocket
← →
Newfrost (2007-02-26 13:41) [3]Я бы с радостью разобрался, но не могу найти... Дело обстоит так: сервис запускается (через services.msc), порт открывается, когда подключаюсь и отправляю какие-либо данные не происходит событие OnClientRead (( Почитал на разных форумах, ответов нигде нет( Был бы очень признателен, если бы мне открыли глаза на то, куда нужно смотреть...
← →
Newfrost (2007-02-26 13:52) [4]Ага, накопал вот что: сервисы не получают оконных сообщений, а работа с сокетами основана на них... Буду пытаться засунуть все это в отдельный поток и сделать сокет блокирующим... Отпишусь, если не получится...
← →
Сергей М. © (2007-02-26 14:04) [5]
> сервис запускается (через services.msc)
Ну а что ж ты тогда спрашиваешь, как его "стартануть" ?
Вот прямо так и стартуй !
А по поводу отладки сервисов читай справку по теме "Debugging service applications".
> не происходит событие OnClientRead
В какой момент времени ты активируешь TServerSocket ?
← →
Сергей М. © (2007-02-26 14:06) [6]
> Буду пытаться засунуть все это в отдельный поток и сделать
> сокет блокирующим
Не обязательно.
Можно оставить сервер в неблок.режиме и организовать в потоке сервиса цикл ожидания/выборки/диспетчеризации оконных сообщений.
← →
Newfrost (2007-02-26 15:43) [7]Собственно вот код, его тут три строки, что в отдельном потоке, что в главном, никакой разницы, не обрабатываются сообщения...
procedure TService1.ServiceExecute(Sender: TService);
begin
ServerSocket1.Port := 9999;
ServerSocket1.Active := true;
while (not Terminated) do
ServiceThread.ProcessRequests(False);
end;
← →
Сергей М. © (2007-02-26 16:16) [8]
> Newfrost (26.02.07 15:43) [7]
Твой сервис взаимодействует с раб.столом ?
← →
Newfrost (2007-02-26 17:04) [9]Нет, мне в принципе, все равно как он будет работать, главное, чтобы мог работать с сетью, мне нужно обрабатывать запросы клиентских компов... user-mode приложение не пойдет, т.к. пользователь может быть не залогинен, тогда некому будет обрабатывать :(
← →
Newfrost (2007-02-26 18:17) [10]Уважаемые! Всем огромное спасибо, особенно Сергею М.! Взаимодействие с рабочим столом, как выяснилось, и было камнем преткновения! Исправил - и все работает как надо!!! Пошел читать мануалы дальше...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c