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

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

Как послать пакет всей подсетке [D6, Win95/98]


_vitek_ ©   (2003-01-07 01:00:00) 

Подскажите как можно послать сообщение всей подсетке, не перебирая ip. Сетевуха вроде как делает это посылая адрес
FF FF FF FF , а как связан ip с этим FF FF FF FF ?


Anatoly Podgoretsky   (2003-01-07 11:19:00) [1]

_vitek_ (07.01.03 01:00)
Никак не связан, это бродкаст адрес всей Сети, слава богу всю Сетьтебе не не удастся зафлудить (мечта хакера).
Ограничится только рядом подсетей, куда пройдут твои пакеты.
А вот если ты действительно хочешь послать сообщение всем компьютерам подсети, то тебе надо посылать на бродкаст адрес этой подсети, кода как его получить программно не знаю, но если знаеь адрес сети и маску, то адрес равен NET or not MASK


Verg   (2003-01-07 11:04:00) [2]

Вот кусок кода, сйчас некогда объяснять. Посмотри: будут вопросы пиши.


#define IP_IS_CLASSA(a) (((a) & HTONL(0x80000000L)) == 0)
#define IP_IS_CLASSB(a) (((a) & HTONL(0xC0000000L)) == HTONL(0x80000000L))
#define IP_IS_CLASSC(a) (((a) & HTONL(0xE0000000L)) == HTONL(0xC0000000L))

#define IP_CLASSA_MASK HTONL( 0xff000000L )
#define IP_CLASSB_MASK HTONL( 0xffff0000L )
#define IP_CLASSC_MASK HTONL( 0xffffff00L )

void TETHER_thread::net_conf( ulong new_ip_addr, ulong new_netmask, ulong new_gateway )
{
ulong mask_net;
broadcast_local = 0xffffffffL;

if( IP_IS_CLASSA( new_ip_addr ) )
mask_net = IP_CLASSA_MASK;
else if( IP_IS_CLASSB( new_ip_addr ) )
mask_net = IP_CLASSB_MASK;
else if( IP_IS_CLASSC( new_ip_addr ) )
mask_net = IP_CLASSC_MASK;

netmask = new_netmask | mask_net;
broadcast_net = ip_addr | ~mask_net;
broadcast_subnet = ip_addr | ~netmask;
.......................
...........................
}


Наверх

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