Как послать broadcast при двух картах?
От: MichaelGendelev  
Дата: 29.06.05 16:03
Оценка:
У меня есть сервер с двумя сетевыми карточками, на каждой висит сеть (через хаб).
Одна сеть скажем 172,16,43.* другая 192,168.0.*
Я шлю с сервера броадкаст
addrTo.sin_addr.S_addr:=htonl(INADDR_BROADCAST);
i:=sendTo(sock_out,LoSend^,sizeOf(TLoSend),0,addrTo,sizeof(addrTo));

а на принимающей станции читаю адрес отправителя. Так вот, получается что броадкаст идет в обе сети,
но адрес в нем стоит 192.,168.0... !
Соотв. принимающая станция из сети 172* не может ответить на этот адрес...

Можно сделать так , чтобы принимающая станция получала пакет с адресом из нужной сети?
Re: Как послать broadcast при двух картах?
От: MaximE Великобритания  
Дата: 29.06.05 17:13
Оценка:
MichaelGendelev wrote:

> У меня есть сервер с двумя сетевыми карточками, на каждой висит сеть (через хаб).

> Одна сеть скажем 172,16,43.* другая 192,168.0.*
> Я шлю с сервера броадкаст
> addrTo.sin_addr.S_addr:=htonl(INADDR_BROADCAST);
> i:=sendTo(sock_out,LoSend^,sizeOf(TLoSend),0,addrTo,sizeof(addrTo));

На какой интерфейс забайнден сокет? На INADDR_ANY?

> а на принимающей станции читаю адрес отправителя. Так вот, получается что броадкаст идет в обе сети,

> но адрес в нем стоит 192.,168.0... !
> Соотв. принимающая станция из сети 172* не может ответить на этот адрес...
>
> Можно сделать так , чтобы принимающая станция получала пакет с адресом из нужной сети?

Возможно поможет создать два сокета и каждый из них забайндить на соответсвующий интерфейс. Broadcast отсылать с обоих сокетов.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[2]: Как послать broadcast при двух картах?
От: MichaelGendelev  
Дата: 29.06.05 19:55
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>MichaelGendelev wrote:


>> У меня есть сервер с двумя сетевыми карточками, на каждой висит сеть (через хаб).

>> Одна сеть скажем 172,16,43.* другая 192,168.0.*
>> Я шлю с сервера броадкаст
>> addrTo.sin_addr.S_addr:=htonl(INADDR_BROADCAST);
>> i:=sendTo(sock_out,LoSend^,sizeOf(TLoSend),0,addrTo,sizeof(addrTo));

ME>На какой интерфейс забайнден сокет? На INADDR_ANY?


Отправляющий сокет не забайнден..

>> а на принимающей станции читаю адрес отправителя. Так вот, получается что броадкаст идет в обе сети,

>> но адрес в нем стоит 192.,168.0... !
>> Соотв. принимающая станция из сети 172* не может ответить на этот адрес...
>>
>> Можно сделать так , чтобы принимающая станция получала пакет с адресом из нужной сети?

ME>Возможно поможет создать два сокета и каждый из них забайндить на соответсвующий интерфейс. Broadcast отсылать с обоих сокетов.


Насколько я понимаю, msdn не советует байндить сокеты для датаграмных посылок. или я не прав?
И потом, в общем случае я исходно не знаю заранее, какие интерфейсы есть. (какие подсети.)
Re[3]: Как послать broadcast при двух картах?
От: MaximE Великобритания  
Дата: 30.06.05 04:45
Оценка:
On Wed, 29 Jun 2005 23:55:49 +0400, MichaelGendelev <43219@users.rsdn.ru> wrote:

[]

> ME>Возможно поможет создать два сокета и каждый из них забайндить на соответсвующий интерфейс. Broadcast отсылать с обоих сокетов.

>
> Насколько я понимаю, msdn не советует байндить сокеты для датаграмных посылок. или я не прав?

Как это? Байндь, если нужно.

> И потом, в общем случае я исходно не знаю заранее, какие интерфейсы есть. (какие подсети.)


Можно определить какие есть интерфейсы.

Но вообще, странно все это; попробую на днях на линуксе...

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.