![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно разорвать удаленный диал-ап? [D5, Win2k]
NikeOLD © (2003-11-29 14:02:00)
Есть задача: клиенты дозваниваются по диал-апу на сервер, происходит короткий обмен информацией, после чего клиент должен отсоединиться. Некоторые злоупотребляют и мешают другим. Имеется собственная программа по мониторингу клиентов без возможности принудительного их отключения. Как с сервера послать сообщение удаленной машине "повесить трубку" при условии, что клиент звонит не непосредственно на сервер, а на CISCO? TimeOut на CISCO стоять не должен.
Есть вариант, написать службу, которая будет слушать какой-либо порт и повесить ее на клиента. Когда придет сообщение с сервера, служба разорвет диал-ап. Однако есть неувязочка - на CISCO открыт лишь один порт по которому идет обмен.
Может быть можно как-то обойтись без написания службы?
NikeOLD (2003-12-01 16:01:00) [21]
Превосходно! Буду знать на будущее, однако под мои задачи я на 200% знаю, что дозвон будет производиться с клиента, на котором есть модем и моя софтина. В этом заключается работа нашей системы. Если провести дозвон через шлюз - сервер просто пошлет подальше, вернее даже не сервер, а сама Циска.
Reindeer Moss Eater (2003-12-01 15:50:00) [22]
Вот например схема, которая сведет на нет все твои усилия по квотированию клиентов:
У клиента своя локальная сеть. Модем на одной машине, а твой клиент на другой. Дозвонившийся компьютер служит шлюзом твоему клиенту, и клиент работает с твоим сервером через NAT.
Адрес дозвонившегося хоста ты знаешь, но там нет твоего софта, который может разорвать диалап.
Посланная с сервера команда с просьбой дисконнекта до клиента дойдет, но у него нет "рубильника" что бы разорвать диалап.
NikeOLD (2003-12-01 15:49:00) [23]
В автозагруз это неактуально. Если бы ты знал какие там идиоты работают, то так рисковать не стал бы, слишком серьезные задачи решаются у нас. Да и опыт написания служб пригодился бы...
Но, понимаю, суть от этого не меняется, что служба, что прога - один черт на клиента физически вешать, хотя в случае с прогой дополнительные настройки делать проще, можно даже прямо с сервера.
Спасибо за терпение!
Дальнейшие советы приветствуются. Заранее спасибо.
Reindeer Moss Eater (2003-12-01 15:43:00) [24]
У всех я знаю IP, знаю каждого поименно, значит можно организовать нечто вроде net send для разрыва связи на стороне клиента.
Это если на дозвонившемся компьютере есть клиентская программа, слушающая команды сервера. (а позвонить может и не клиент твоего сервера)
Это если сервер знает, что клиент позвонил и висит на линии (для этого надо что бы дозвонившийся клиент соединился с твоим сервером)
Карелин Артем (2003-12-01 15:42:00) [25]
Ну сдался тебе этот ServiceApplication!! Делай прогу с невидимым окном и пихай в автозагруз.
NikeOLD (2003-12-01 15:37:00) [26]
В настоящее время дозвон происходит регулярно по трем телефонам, 3 клиента из 30 могут висеть одновременно. У всех я знаю IP, знаю каждого поименно, значит можно организовать нечто вроде net send для разрыва связи на стороне клиента. Неужели единственным выходом остается писать ServiceApplication, а затем копать техническую службу, чтобы они установили ее у всех клиентов: это ж вся Нижегородская область!!?
Reindeer Moss Eater (2003-12-01 13:13:00) [27]
Только это все равно слабо поможет.
Кто-то может занять канал и без последующего соединения с сервером системы.
И сервер ничего не узнает о том, что канал занят, и сколько именно времени он занят.
Reindeer Moss Eater (2003-12-01 13:07:00) [28]
RAS сервер организован на циске. Стало быть в том линуксе что крутится на циске должен быть процесс, умеющий класть трубу по сигналу твоего сервера, который считает длительность сеанса с клиентом.
Иначе никак. Случаи аппаратного прерывания сеанса связи не рассматриваю.
NikeOLD (2003-12-01 12:53:00) [29]
Благодарю за ответ.
Если есть открытый порт - то все просто. Из своей программы посылаю сообщение клиенту о дисконнекте на порт, прослушиваемый службой. Далее все и так ясно, служба закрывает коннект - задача выполнена.
Только в этом-то и проблема, что порты открывать нельзя, да и не в моей власти Циска. Поэтому и хотел узнать нет ли другого способа разорвать соединение с сервера без установки дополнительного ПО на клиенте.
Карелин Артем (2003-12-01 08:00:00) [30]
Как ты это себе представляешь? В чем разница между службой, мониторящей порт и программой, мониторящей порт? Как ты себе представляешь обмен сообщениями через закрытые порты?
Предлагаю открыть еще один порт на Циске и писать программу для дисконнекта со стороны клинта.