Форум: "Сети";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизIndy предварительная проверка на разрешенные IP для подключения Найти похожие ветки
← →
Kacnep © (2006-07-24 08:42) [0]Доброе время суток! Уважаемые мастера!
Кто сам занимался или точно знает ответ просьба пособить.
Инди 10, Дельфи 6. Вопросы по IdCmdTCPServer но в принципе для любого ИНДИ сервера...
1. Вопрос.
Для чего в инди Bindings?
Смотрел кучу примеров с его использование но не разобрался.
Может кто нить что нить пояснить по этому поводу.
Есть книга Инди в глубину :). Примеры - но не понятно. Все примеры используют ЭТО.
2. Вопрос.
Как прежде чем принть подключение сервером - определить если IP не в списке разрешенных - то даже и не разрешать подключаться ему?
Я сейчас делаю так...procedure Tf_Main.id_SrvConnect(AContext: TIdContext);
begin
AddLog(AContext.Connection.Socket.Binding.PeerIP+" Connected!",LogF);
if (lb_IPs.Count=0) or (lb_IPs.Items.IndexOf(AContext.Connection.Socket.Binding.PeerIP)<0) then begin
AContext.Connection.Disconnect;
AddLog(AContext.Connection.Socket.Binding.PeerIP+" kicked!",LogF);
end;
end;
В этом коде мне не нравиться то что подключение вроде бы уже состоялось :(
Или я что то не правильно понял?
Заранее Спасибо всем откликнувшимся!
← →
Сергей М. © (2006-07-24 09:01) [1]
> Kacnep © (24.07.06 08:42)
> Для чего в инди Bindings?
Для привязки гнезда к нескольким сетевым интерфейсам одновременно.
> Как прежде чем принть подключение сервером - определить
> если IP не в списке разрешенных - то даже и не разрешать
> подключаться ему?
Никак. Инди не реализует такую возможность по ряду важных причин.
← →
Kacnep © (2006-07-24 09:57) [2]Еще раз спасибо за ответ.
По поводу первого...
Т.е. если я не использую несколько сетвых и не предусматриваю эту возможность в своей программе то мне (если брать кодинг из примеров) нужно везде поубирать все что относиться к БИНДИНГу?
По поводу второго...
Т.е. код примера приведенного мной - верен? После подключения я проверяю может ли он быть ко мне подлючен и если нет то Дисконект...
← →
Сергей М. © (2006-07-24 10:05) [3]
> нужно везде поубирать все что относиться к БИНДИНГу?
Так все-таки к Bindings или к Binding ? Это же разные же свойства разных объектов ..
> По поводу второго...
> Т.е. код примера приведенного мной - верен?
Верен, но он не решает задачу в оригинальной ее постановке - не допустить коннект с конкретным IP клиента.
← →
Kacnep © (2006-07-24 10:49) [4]1.
Вот код из примера запуска сервераid_Srv.Bindings.Clear; // bindings cannot be cleared until TidTCPServer is inactive
try
for i := 0 to lbIPs.Count-1 do
if lbIPs.Checked[i] then begin
Binding:=IdTCPServer.Bindings.Add;
Binding.IP:=lbIPs.Items.Strings[i];
Binding.Port:=StrToInt(edtPort.Text);
SL.append("Server bound to IP " + Binding.IP + " on port " + edtPort.Text);
end;
Что бы это значило?
2. А что тогда означает Bindings и Binding?
3. Каким образом можно решить задачу в оригинаолной постановке? Идеи?
Хотелось бы чтобы именно для неразрешенных ИП даже события коннект не наступало.
Спасибо.
← →
Сергей М. © (2006-07-24 11:13) [5]
> Что бы это значило?
Это добавление сетевых интерфейсов, которые серверное гнездо будет обслуживать.
> что тогда означает Bindings и Binding?
Св-во Binding отражает св-ва конкретно установленного коннекта по конкретному сетевому интерфейсу.
Св-во Bindings отражает список всех сетевых интерфейсов, которые сервер будет использовать после активации.
> Каким образом можно решить задачу в оригинаолной постановке?
> Идеи?
Отказаться от Инди в пользу любого иного аналогичного по назначению ПО, использующего механизм условного акцептирования запросов на соединение.
см. WSAAccept()
← →
Kacnep © (2006-07-24 11:21) [6]Спасибо Большое за ответы!
Тема закрыта.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c