Вверх ↑
Этот топик читают: Гость
Ответов: 37
Рейтинг: 5
#1: 2013-06-05 12:09:37 ЛС | профиль | цитата
Добрый, опять застопорился, если не сложно помогите.
Пишу клиент серверное приложение, серверная часть должна работать как служба. как бы когда серверная часть просто как приложение всё норм работает, сообщения между клиентом и сервером бегают. Перевожу серверную часть в службу, устанавливаю её в системе, запускаю и всё клиент подключается но сообщения не доходят(
вот примеры
серверная часть:
code_31180.txt

Клиентская часть
code_31181.txt
карма: 0

0
файлы: 2code_31180.txt [707B] [112], code_31181.txt [388B] [116]
Разработчик
Ответов: 26305
Рейтинг: 2146
#2: 2013-06-05 12:56:28 ЛС | профиль | цитата
Fidel писал(а):
Перевожу серверную часть в службу, устанавливаю её в системе, запускаю и всё клиент подключается но сообщения не доходят

TCP_Server и TCP_Client не работают в сервисах
карма: 22

0
Ответов: 37
Рейтинг: 5
#3: 2013-06-05 14:21:52 ЛС | профиль | цитата
nesco, спасибо, хоть и разочаровали, пойдём через фоновое приложение
можно ещё вопрос, когда стартую службу (притом служба не несёт не чего, просто пустая программа), запускается и процесс с таким же названием, останавливаю службу удаляется процесс, удаляю процесс останавливается служба, это нормально? мне казалось что если есть служба то в процессе нет необходимости.
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#4: 2013-06-05 14:30:30 ЛС | профиль | цитата
Fidel писал(а):
мне казалось что если есть служба то в процессе нет необходимости

Служба -- это высокоприоритетный процесс у которого нет оконного обработчика сообщений
карма: 22

1
Голосовали:Fidel
Ответов: 37
Рейтинг: 5
#5: 2013-06-05 14:50:41 ЛС | профиль | цитата
nesco, Спасибо
карма: 0

0
Ответов: 9906
Рейтинг: 351
#6: 2013-06-05 17:33:59 ЛС | профиль | цитата
nesco писал(а):
Служба -- это высокоприоритетный процесс у которого нет оконного обработчика сообщений

Ну-ну
карма: 9

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#7: 2013-06-05 17:57:02 ЛС | профиль | цитата
Galkov писал(а):
Ну-ну

Насколько я помню, то очередь сообщений в сервисах не обрабатывается системой. Попадались уже на это, по-моему дискуссия была между тобой и tsdima, а потом еще и Dilma присоединился к дискуссии. К общему знаменателю так тогда и не пришли, ЕМНИП.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#8: 2013-06-05 19:52:57 ЛС | профиль | цитата
Упсс...
------------ Дoбавленo в 19.52:
Очередь сообщений не отрабатывается нашей программой - это точно. Берешь смотришь, и видишь, что обработчик сообщений не нарисован.
А вот есть ли экспериментальные данные, что сообщений нет, если этот цикл обработки сообщений нарисовать

Или просто - одна бабка сказала ???
Или в каком букваре нарисано ???

Когда-то ведь, и для service -- не было.
карма: 9

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#9: 2013-06-05 21:52:06 ЛС | профиль | цитата
Galkov писал(а):
Берешь смотришь, и видишь, что обработчик сообщений не нарисован

Но в TCP_Server, к примеру, есть обработчик, но он фиг работает. А вот если попробывать прокручивать очередь вручную при помощи doLoopMessages, у сервиса же есть тактовое событие... где-то я такое уже встречал
карма: 22

0
Ответов: 9906
Рейтинг: 351
#10: 2013-06-05 23:11:51 ЛС | профиль | цитата
Слушай, я никогда эту дурь не нюхал...
Не мое это - службы себе ставить.

Однако там ЕСТЬ обработчик сообщений, при внимательном осмотре-то:

#pas
procedure THINTService.ServiceMain;
...
fHandle := RegisterServiceCtrlHandler(...
if fHandle<>0 then begin
...
repeat
...
while PeekMessage( Msg, 0, 0, 0, PM_REMOVE ) do begin
TranslateMessage( Msg );
DispatchMessage( Msg );
end;
until WaitForSingleObject(fStop,_prop_StepTime)=WAIT_OBJECT_0;
_hi_OnEvent(_event_onStop);
...
end;
CleanUp;
end;

Грубо говоря, если чего-то не работает, то по другой какой-то причине.
Скорее всего...
карма: 9

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#11: 2013-06-05 23:23:40 ЛС | профиль | цитата
Galkov писал(а):
Грубо говоря, если чего-то не работает, то по другой какой-то причине

Хм, действительно есть, но вот только фиг оно работает, оказывается. Ну не работают в сервисе сторонние оконные обработчики, скорее всего
Galkov писал(а):
по другой какой-то причине

карма: 22

0
Ответов: 9906
Рейтинг: 351
#12: 2013-06-05 23:37:17 ЛС | профиль | цитата
А если таймер поставить, работать будет, или нет
А если Thread, onSyncExec сработает

На ДА -- одни выводы. На НЕТ - другие, наверное
карма: 9

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#13: 2013-06-06 00:09:19 ЛС | профиль | цитата
Galkov писал(а):
А если Thread, onSyncExec сработает

Не работает, только что проверил. А вот onExec работает
карма: 22

0
Ответов: 9906
Рейтинг: 351
#14: 2013-06-06 09:24:52 ЛС | профиль | цитата
Ну про Thread я вообще случайно написал. Ежу понятно, что он и не должен работать. Там при Synchronize идет посылка сообщения CM_EXECPROC аплету, если нам не в лом было его завести. Прием - в TControl.WndProc
О чем тут говорить.

А вот kol-овский таймер заводит сам TControl-окно. Одно на все таймеры, и мимо всяких аплетов.
Может и заработать.

карма: 9

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#15: 2013-06-09 00:25:42 ЛС | профиль | цитата
Galkov писал(а):
Может и заработать

Хм, Timer работает в сервисах. Тогда мне не совсем понятно, почему не работает обработчик у TCP_Server, и не только у него, кстати
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)