У меня есть сервер с двумя сетевыми карточками, на каждой висит сеть (через хаб).
Одна сеть скажем 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* не может ответить на этот адрес...
Можно сделать так , чтобы принимающая станция получала пакет с адресом из нужной сети?
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 отсылать с обоих сокетов.
Здравствуйте, 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 не советует байндить сокеты для датаграмных посылок. или я не прав?
И потом, в общем случае я исходно не знаю заранее, какие интерфейсы есть. (какие подсети.)
On Wed, 29 Jun 2005 23:55:49 +0400, MichaelGendelev <43219@users.rsdn.ru> wrote:
[]
> ME>Возможно поможет создать два сокета и каждый из них забайндить на соответсвующий интерфейс. Broadcast отсылать с обоих сокетов. > > Насколько я понимаю, msdn не советует байндить сокеты для датаграмных посылок. или я не прав?
Как это? Байндь, если нужно.
> И потом, в общем случае я исходно не знаю заранее, какие интерфейсы есть. (какие подсети.)
Можно определить какие есть интерфейсы.
Но вообще, странно все это; попробую на днях на линуксе...