#delphi #network-programming #bandwidth
#delphi #сетевое программирование #пропускная способность
Вопрос:
У нас есть локальная сеть и маршрутизатор ADSL, я хочу создать приложение для управления трафиком клиентов, фактически я хочу совместно использовать Интернет в сети с ограниченной пропускной способностью клиентов.
будьте осторожны, чтобы на клиентах не было ни одного приложения, подключенного к серверу, только одно приложение на сервере, которое должно контролировать трафик.
Я могу ограничить пропускную способность клиентского приложения, когда оно подключается к серверу, изменив настройку IOHandler, используя компоненты Indy, но на клиентских компьютерах нет ни одного клиентского приложения, и я хочу сделать это по IP-адресу (или имени хоста) ! , возможно ли это?! на самом деле, у нас есть некоторый IP-адрес в сети, и мы должны ограничить трафик, используя эти IP-адреса…
есть пример от мистера Зарко Гайича :
http://delphi.about.com/od/fullcodeprojects/l/aa112903a.htm
но это только для мониторинга, я хочу контролировать трафик…
Как я могу это сделать?!
спасибо ранее…
Комментарии:
1. Почему вы хотите сделать это из приложения Delphi? Обычно это делается с помощью хорошего рутера или маршрутизатора Linux.
2. Мне было любопытно, существует ли API для этого, и я предполагаю, что должно быть что-то, что я нашел netlimiter.com который предоставляет ActiveX для этого
3. Я предполагаю, что это установит драйвер в сетевой стек. Windows допускает установку драйвера «filter», который может управлять тем, что отправляется / принимается в / из предыдущего и следующего драйвера в стеке. Но такое решение не может быть написано на Delphi, для этого потребуется DDK и совместимый компилятор C / C .
4. @Robert Love : спасибо, Netlimiter — это инструмент для ограничения трафика программного обеспечения, но я хочу ограничить пропускную способность клиентов, если я использую это решение, я должен установить свое приложение на всех клиентах…
Ответ №1:
В принципе, вам нужно будет написать прокси, направить весь трафик через прокси, отслеживать и вычислять пропускную способность каждого клиента и начать задерживать клиентов, которые запрашивают слишком много. Если у вас нет веских причин писать свои собственные, есть готовые решения, например Squid (https://serverfault.com/questions/79824/limiting-bandwidth-dynamically-in-squid ).
Комментарии:
1. 1 для squid, даже под Windows
2. спасибо, похоже, что это будет хлопотная работа! Я думаю, что это лучше сделать с помощью модема-маршрутизатора!
3. Предпочитаю получить лучший ответ на вопрос «Как». Другое программное решение не требуется. Кроме того, я использую 2 службы сотовой связи, которые я в настоящее время подключаю. Мне нужно знать, как создать свою собственную версию программного обеспечения, которое уже сделало это, чтобы я мог настроить его самостоятельно. Пожалуйста, укажите на какой-нибудь исходный код или дополнительную информацию о том, как действовать в этой ситуации.