![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
В ту, которая будет устраивать по маршруту