nesco, Galkov,
Товарищи, у вас что нибудь получилось с TCP в сервисе?
А то я тоже, как и ТС, решил TCP в сервис запихать, а он не работает
Вот маленькие примеры
Сервер code_31290.txt
Клиент code_31291.txt
При этом странно не работает
Соединение проходит, а текст не передается
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
|
|||
карма: 1 |
| ||
файлы: 2 | code_31290.txt [314B] [240], code_31291.txt [1KB] [227] |
Ответов: 9906
Рейтинг: 351
|
|||
Думаю, что нет.
Нет никакого настроения заморачиваться с введением аплета (без которого kol-у вся жисть только чернобелая). Такого за собой потянуть может - мама не горюй. Если бы с самого начала делали.... ------------ Дoбавленo в 11.15: Что-то мне подсказывает, что nesco скажет то же самое. Хотя - чем черт не шутит |
|||
карма: 9 |
|
Ответов: 1343
Рейтинг: 31
|
|||
эх видимо не кто не додумается до этого:
Берём запуск приложений и ВСЁ создаём сервис и в него пихаем запуск клиента или сервера в виде программы другой и под запуск эту программу так же что бы не было прерываний берём делаем проверку процесса если он закрылся или его закрыли сервис его открывает снова это самый простой пример |
|||
карма: 2 |
|
Ответов: 817
Рейтинг: 52
|
|||
Rysik,
А как вы будете запускать программу, если на сервере (железный комп) нет активных пользователей, т.е. нет рабочих сессий? Я думаю никак. Остается только полноценный сервис (служба). |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
-= DriveR =- писал(а): нет активных пользователей, т.е. нет рабочих сессийА разве это возможно У Винды же вроде всегда есть пользователь, даже в терминальном сервере. Galkov писал(а): Хотя - чем черт не шутитНасколько я понял, то созданному в сервисе окну пропускаются только выборочные сообщения, такие как WM_TIMER, а вот WM_USER глушится. Точной инфы про пропускаемые сообщения мне найти нигде пока не удалось |
|||
карма: 22 |
|
Ответов: 817
Рейтинг: 52
|
|||
nesco писал(а): А разве это возможно Возможно 1. Вы только включили комп., ОС загрузилась и находится в ожидании ввода пароля 2. Вы получили доступ к своему рабочему столу, поработали, а потом сделали LogOff (опять ожидание ввода пароля) При этих условиях работают только службы. Чаще всего, такие условия работы ОС, встречаются на серверах (там где нужна повышенная секурность) Оставлять рабочие сессии на сервере, это не кошерно |
|||
карма: 1 |
|
Ответов: 4631
Рейтинг: 749
|
|||
nesco, может для этих случаев нужно использовать не оконные сообщения (WSAAsyncSelect в TSocket.Create), а объекты событий через функцию WSAEventSelect http://www.sources.ru/cpp/cpp_network_evets_winsock2.shtml
(здесь то же самое но на Delphi) В общих чертах: - выполняем bind - создаем объект через WSACreateEvent() - связываем объект с сокетом и требуемыми событиями (WSAEventSelect()) - создаем параллельный поток и в нем располагаем обработчик событий. В обработчике ожидаем прихода события через WSAWaitForMultipleEvents |
|||
карма: 26 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Netspirit писал(а): может для этих случаев нужно использовать не оконные сообщенияGalkov писал(а): Если бы с самого начала делали....К тому же, наличие потока -- это асинхронный вывод, а наличие обработчика окна -- это синхронный. А сколько мы уже съели попыток засунуть асинхронный вывод на интерфейсные элементы. И все валят на то, что они пользователи, а не программисты и знать этого не обязаны, и во всем виноваты разработчики. Так что я на себя такую ответственность не хочу брать. Если хочешь, то можешь договориться с -= DriveR =- и сделать ему отдельный TCP_Server для служб. А в остальном, у нас эти элементы нормально работает, а службы юзают единицы из общего потока пользователей |
|||
карма: 22 |
|
Ответов: 817
Рейтинг: 52
|
|||
nesco писал(а): а службы юзают единицы из общего потока пользователейТак может именно потому что служба не полноценная? Я с HiAsm знаком ОЧЕНЬ давно, за время моего знакомства я столько админских проектиков похерил и только потому, что службы не работают должным образом Не сочтите за наезд с моей стороны, просто мысли в слух, почему службы пользуют единицы. Вообще, по большому счету, компонент службы в нынешнем виде вообще не нужен. Для чего делать локальную службу? Проще сделать фоновое приложение, а служба тем и хороша что она может работать с сетью, вне пользовательской сессии. Для меня, как для админа, это очень актуально. |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
-= DriveR =-, у нас разве по другому: "спасение утопающих - дело рук самих утопающих"
|
|||
карма: 9 |
|
Ответов: 817
Рейтинг: 52
|
|||
Galkov писал(а): спасение утопающих - дело рук самих утопающихНу не программист я, не программист. Не дано мне. |
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
-= DriveR =- писал(а): Ну не программист я, не программист. Не дано мне.А мы тоже такие же |
|||
карма: 22 |
|
27