Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UDPServer Indy 
:(
    Опции темы
QuadMan
Дата 30.6.2015, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 30.6.2015

Репутация: нет
Всего: нет



Подскажите, пожалуйста.

Использую Indy 10. Необходимо написать UDP Server, который принимает сообщения из двух подсетей (в компе две сетевухи).

Могу ли я настроить один Server, чтобы он принимал данные сразу из двух подсетей через Bindings, примерно так:

Код

  Server := TIdUDPServer.Create;
  Server.DefaultPort := 3030;
  Server.Bindings.Add.IP := 192.168.0.1;
  Server.Bindings.Add.IP := 192.168.1.1
  Server.OnUDPRead := UDPRead;
  Server.Active := true;


Или, если нет, то меня устроит вариант с приемом только из одной подсети, но в случае отсутствия данных из нее, сервер должен переходить на другую подсеть.
В таком варианте, когда я замечаю, что данные не приходят, я переключаюсь на другую подсеть таким образом:
Код

Server.Active := false;
Server.Binding.Ip := NextIP;
Server.Active := true;


но при этом вылетают разные ошибки... (в момент присваивания нового IP)

Ошибки перестали вылетать, когда я стал при необходимости сменить подсеть приема, удалять и создавать сервер заново:
Код

  Server.Active := FALSE;

  Server.Destroy;

  Server := TIdUDPServer.Create;
  Server.DefaultPort := 3030;
  Server.Binding.IP := NextIP;
  Server.OnUDPRead := UDPRead;
  Server.Active := true;


Объясните, пожалуйста, как лучше делать.

Спасибо.
PM MAIL   Вверх
Romikgy
Дата 30.6.2015, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



лучше создать 2 потока и в них создать отельные сервера


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kami
Дата 30.6.2015, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(QuadMan @  30.6.2015,  22:29 Найти цитируемый пост)
Необходимо написать UDP Server, который принимает сообщения из двух подсетей (в компе две сетевухи).

Вообще-то, по умолчанию бинд не проводится. Т.е. если явным образом не задавать Binding, то и привязка идти не будет, сервер будет слушать все сетевые интерфейсы. Насколько я понял, именно такое поведение вам и требуется.
Цитата(QuadMan @  30.6.2015,  22:29 Найти цитируемый пост)
Могу ли я настроить один Server, чтобы он принимал данные сразу из двух подсетей через Bindings, примерно так:

Код уже написан, что мешает проверить его на практике? Навскидку, бегло просмотрев код индейцев, кроме IP для каждого из добавляемых в список биндов нужно указывать порт.

Добавлено @ 23:42
Цитата(Romikgy @  30.6.2015,  23:26 Найти цитируемый пост)
лучше создать 2 потока и в них создать отельные сервера 

Не соглашусь. Индейцы и так на каждый чих создают потоки. На каждый из биндов (кстати, если не задать ни одного, то их в итоге окажется два - на IPv4 и IPv6) тоже создается по одному потоку, обслуживающему listening socket.
Тем более, что обработка полученных данных передается через Synchronize, т.е. в основной поток. Как таковое наличие "своих" дополнительных потоков становится нецелесообразным... Бррр. Не зря я не работаю с индейцами...

Это сообщение отредактировал(а) kami - 30.6.2015, 23:56
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.