Как ограничить пропускную способность клиентов по IP-адресу? ( Delphi)

#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 службы сотовой связи, которые я в настоящее время подключаю. Мне нужно знать, как создать свою собственную версию программного обеспечения, которое уже сделало это, чтобы я мог настроить его самостоятельно. Пожалуйста, укажите на какой-нибудь исходный код или дополнительную информацию о том, как действовать в этой ситуации.