Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

broadcast и две сетевухи


thevalery ©   (2003-11-27 15:07:00) 

У меня на машине 2 сетевухи. Я шлю UDP-броадкастовый пакет. Вопрос - с какой из сетевух он будет отправлен и в какую сеть он попадет? Если можно - объясните физику этого процесса.


имя   (2003-12-18 14:13:00) [1]

Удалено модератором


имя   (2003-12-02 18:17:00) [2]

Удалено модератором


Fay   (2003-12-01 15:06:00) [3]

Т.е. если я захочу отправить что-то на диапазон инетовских адресо из своей сетки через роутер, то не лапучится чичего?


Verg   (2003-12-01 13:29:00) [4]


> > Verg
> > Строго говоря, отсылать IP датаграмму на FFFFFFFF нельзя...


> А эт еще почему? Броадкаст, пока что, еще никто не отменял,


Не путай броадкаст Ethernet и броадкаст IP.

В IP броадкаст - это броадкастовый IP адрес подсети.


> А как делается отсылка отдельно по интерфейсам?


В Виндах сначала вызываешь GetIpAddrTable (IpHlpAPI) там тебе вернут список адресов логических интерфейсов с их максами подсетей и броадкастовыми адресами, на которые ф-цией sendto и отпарвляй броадкасты (на все или только на те, которые надо).


thevalery   (2003-12-01 12:24:00) [5]

> Rouse_
>> Вопрос - с какой из сетевух он будет отправлен
> А в какую сеть попадет? А какие сети у тебя есть?

В данный момент у меня есть две сети. Первая - локальная,
вторая - к провайдеру (в интернет, тоже сетевуха - не модем).
В общем, проверить на практике не получается :(
А вот что будет у заказчика - понятия не имею. Суть в том,
что программы должны уметь находить друг друга в локалке,
включаясь и выключаясь "на лету". Исходя из особенностей
задачи выбран UDP. Так что вопрос лишь в том, куда уйдет
широковещательный пакет, если машина включена в две сети.
Меня бы удовлетворили ответы типа "всегда - во все" или
"исходя из таких-то настроек". Да, чуть не забыл, -
все машины под виндой.

> Verg
> Строго говоря, отсылать IP датаграмму на FFFFFFFF нельзя...

А эт еще почему? Броадкаст, пока что, еще никто не отменял,
а при отсылке пакета ставится INADDR_BROADCAST, что и есть FFFFFFFF.
Во всяком случае у меня работает и ни разу не сбоило...

> Если нужно отправить броадкаст со всех интерфейсов, то нужно
> получить конфигурацию интерфейсов и выполнить для каждого из
> них sendto на броадкаст адрес подсети танного интерфейса.

А как делается отсылка отдельно по интерфейсам?
В данный момент у меня работает так (незначащие
куски и обработка ошибок пропущены):


sock: integer;
saUdpServ,saUdpCli: TSockAddr;
usEndPoint: u_short;
...

sock := socket(AF_INET,SOCK_DGRAM,0);
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,@i,4);

saUdpCli.sin_family := AF_INET;
saUdpCli.sin_addr.s_addr := htonl(INADDR_ANY);
saUdpCli.sin_port := htons(0);
bind(sock, saUdpCli, sizeof(TSockAddr));

usEndPoint := PORT;
saUdpServ.sin_family := AF_INET;
saUdpServ.sin_addr.s_addr := htonl(INADDR_BROADCAST);
saUdpServ.sin_port := htons(usEndPoint);
sendto(sock, data, data_length, 0, saUdpServ, sizeof(TSockAddr));


Verg   (2003-11-28 16:09:00) [6]

Строго говоря, отсылать IP датаграмму на FFFFFFFF нельзя.
Но, в целях совместимости многие системы поддерживают такую передачу. При этом многие системы отсылают в каждый интерфейс по одной копии этой датаграммы, самостоятельно преобразовав такой адрес в бродакастовый адрес подсети данного интерфейса.
Но, по-моему, винды просто отсылают этот пакет в первый попавшийся интерфейс.
Если нужно отправить броадкаст со всех интерфейсов, то нужно получить конфигурацию интерфейсов и выполнить для каждого из них sendto на броадкаст адрес подсети танного интерфейса.


Anatoly Podgoretsky   (2003-11-27 20:09:00) [7]

Если этот маршрут не прописан в таблице маршрутизации, то пакеты пойдут на шлюз по умолчанию.
У меня такой маршрут прописан.


Rouse_   (2003-11-27 19:59:00) [8]

Не возлагай таких уж прямо больших надежд на Броадкаст...
Анатолий тебя верно осек...
Если грубо то непонятен даже вопрос...
> Вопрос - с какой из сетевух он будет отправлен
А в какую сеть попадет? А какие сети у тебя есть?


thevalery   (2003-11-27 15:21:00) [9]

"В ту, которая будет устраивать по маршруту" - Дык это ж броадкаст (айпишник = FF.FF.FF.FF) - какой тут может быть маршрут? Мнэ... Или может пакет пойдет в обе сети?...


Anatoly Podgoretsky   (2003-11-27 15:08:00) [10]

В ту, которая будет устраивать по маршруту


Наверх

Титульная страница Поиск, карта сайта Написать письмо