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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UDP протокол, Широковещательная передача данных 
:(
    Опции темы
Xsander
Дата 16.6.2006, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго времени суток!!!

Столкнулся с такой проблемой, нужно переслать пакета данных на все ПК в сети по UDP протоколу.
В принципе, я ее решил вот таким образом:

Код

.................
uses
    WinSock;
.................

procedure SendUDP;
var
  Init    : TWSAData;
  Sock    : TSocket;
  SockOpt : BOOL;
  Target  : TSockAddrIn;
  Message : array [0..255] of Char;
  Tmp : String;
begin
  Tmp := 'Test';
  StrPCopy(Message, Tmp);
    begin
      WSAStartup($101,Init);
      Sock:=Socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
      SockOpt:=TRUE;
      SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST, PChar(@SockOpt),SizeOf(SockOpt)) ;
      Target.sin_port:=htons(5555);
      Target.sin_addr.S_addr:=INADDR_BROADCAST;
      Target.sa_family:=PF_INET;
      SendTo(Sock,Message,sizeof(Message),0,Target,SizeOf(Target));
      WSACleanup;
end;


Со стороны получателя, использую компоненты Indy UDP Server

Все это работает, но...
В сети существуют подсети, например, 10.9.5.1  и 10.3.2.1
Если посылать пакет с ПК находящегося в подсети 10.9.5.1, то этот пакет получают только  ПК из этой подсети, ну и аналогично для других подсетей.
Так вот суть вопроса, мне нужно посылать и получать пакеты во всех подсетях, как победить эту заразу???

Помогите, плиз. 
PM MAIL   Вверх
Snowy
Дата 16.6.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Так уж устроен протокол UDP.
Он отправляет пакеты только в одну подсеть.
Чтобы отправлять в две подсети, нужно выполнять отправку 2 раза.
Чтобы указать, в какую подсеть отправлять, нужно привязать сокет к нужному сетевому адаптеру при помощи функции bind.
Без такой привязки винда сама будет выбирать в какую подсеть слать.
Что в твоём случае и происходит.

Добавлено @ 10:11 
ЗЫ. Если компьютер находится только в одной подсети, а слать нужно в разные,
то в сети должна быть настроена маршрутизация UDP между подсетями.
А у Вас похоже, маршрутизируется только TCP.

Добавлено @ 10:12 
Если настроить маршрутизацию нет возможности, то нужно, чтобы программа, установленная на компьютере с двумя интерфейсами, при получении пакетов, отсылала бы их копию в другую подсеть. 
PM MAIL   Вверх
Mechanic
Дата 16.6.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

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



Если на роутерах не фильтруются Broudcast пакеты тогда
     Должно работать
Иначе
     Не лечится. smile

Только multicast посылки.. 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
Xsander
Дата 16.6.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Snowy @ 16.6.2006,  10:08)
Добавлено @ 10:12 
Если настроить маршрутизацию нет возможности, то нужно, чтобы программа, установленная на компьютере с двумя интерфейсами, при получении пакетов, отсылала бы их копию в другую подсеть.

Т.е. передавать пакет по цепочке, а если подсетей много? Как программа узнает, в какую именно подсеть отправить копию пакета.
Конечно, можно предусмотреть возможность отправки копий пакета во все подсети сразу и ждать ответа. 
PM MAIL   Вверх
Snowy
Дата 16.6.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Если подсетей много, то нужно настраивать маршрутизацию UDP или отказываться от броадкаста. 
PM MAIL   Вверх
DCoder
Дата 17.6.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня, кстати, тоже вопрос по Indy UDP. Почему по интернету пакеты не доходят, если даже я не пользуюсь броадкастом? 
PM MAIL   Вверх
Snowy
Дата 18.6.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Маршрут не находят.
Некоторые провайдеры вообще не верят в существование UDP. Настраивают только TCP.
Хотя иногда есть и плюсы. Бывает, что UDP идёт, а провайдер его не считает...
Можно гигабайты прокачать по UDP - на стоимость это никак не падает. Халява. 
PM MAIL   Вверх
OvsInc
Дата 18.6.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Snowy @ 18.6.2006,  11:02)
Маршрут не находят.
Некоторые провайдеры вообще не верят в существование UDP. Настраивают только TCP.
Хотя иногда есть и плюсы. Бывает, что UDP идёт, а провайдер его не считает...
Можно гигабайты прокачать по UDP - на стоимость это никак не падает. Халява.

По-моему не в тему. Xsander говорит о локальной частной сети с двумя подетями. Связь между ними обеспечивает маршрутизатор. При чем тут провайдеры?
На маршритизаторе обязательно стоит брандмауэр (или прокси), а в его политика проста до безобразия (что не надо не пускать) и обусловлена потребностями сети (напимер, стандартный набор - FTP (21 TCP порт), WWW (80 TCP), NetBIOS (137 TCP UDP,138 TCP UDP,139 TCP UDP), DNS (55 UDP)). Так что выход - один использовать либо стандартный порт, либо договариваться с админом. 
PM MAIL   Вверх
Snowy
Дата 18.6.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(OvsInc @  18.6.2006,  19:00 Найти цитируемый пост)
По-моему не в тему. Xsander говорит о локальной частной сети с двумя подетями.
Цитата(DCoder @  17.6.2006,  08:22 Найти цитируемый пост)
Почему по интернету пакеты не доходят, если даже я не пользуюсь броадкастом? 


Добавлено @ 19:10 
Просто это уже ответ на другой вопрос. 
PM MAIL   Вверх
Mechanic
Дата 18.6.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

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



Цитата(Snowy @  18.6.2006,  11:02 Найти цитируемый пост)
Маршрут не находят.
Некоторые провайдеры вообще не верят в существование UDP. Настраивают только TCP.
Хотя иногда есть и плюсы. Бывает, что UDP идёт, а провайдер его не считает...


В этом случае роутер ведь не делает разницы между TCP и UDP пакетами? Роутится ведь сам IP, независимо от того, что на него понавешано.  smile 
Почему же тогда под TCP маршруты находятся, но под UDP нет?
Конечно, имеется в виду ситуация, когда UDP-таки ходит. smile 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
DCoder
Дата 19.6.2006, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Но, если я не ошибаюсь, интернет-радио работает на UDP. Как же в этом случае пакеты всегда "находят маршрут"? 
PM MAIL   Вверх
Mechanic
Дата 19.6.2006, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

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



Цитата(DCoder @  19.6.2006,  07:59 Найти цитируемый пост)
Но, если я не ошибаюсь, интернет-радио работает на UDP

Ошибаешься. Оно работает на прямом TCP/IP туннеле.  smile  
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
DCoder
Дата 19.6.2006, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И что это значит?  smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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