The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Отшравка широковещательных сообщений"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Отшравка широковещательных сообщений"
Сообщение от Aleks emailИскать по авторуВ закладки on 13-Июл-02, 15:16  (MSK)
Я не искушён в сетевом програмировании, поэтому простите если вопрос покажется лаймерским.
Проблема в следующем надо отправить udp сообщение всем компам данной сети. Подскажите функцию или лучше кусок кода для примера.
Вот что у меня сделано:
//------------------------------------------------------
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family      = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("192.168.1.1");
serv_addr.sin_port        = htons(SERV_UDP_PORT);
strncpy(mesg, "123456789", 8);
while(1)
{
  sendto(ss, mesg, 9, 0, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
  cout << "client: send mesage for server #\t" << mesg << endl;
  sleep(5);
}
//------------------------------------------------------
Если сервер работает на 192.168.1.1 то всё хорошо (сообщения он получает), но этого заранее не известно, да и серверов может быть несколько. Поробывал слать на 192.168.1.255 - сервак не чего не получает.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Отшравка широковещательных сообщений"
Сообщение от Andrey emailИскать по авторуВ закладки on 15-Июл-02, 09:07  (MSK)
>этого заранее не известно, да и серверов может быть несколько. Поробывал
>слать на 192.168.1.255 - сервак не чего не получает.

Надо чтобы сервера слушали на широковещательном адресе, т.е. надо чтобы bind(2) на сервере был сделан на .255 (в данном случае) адрес.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Отшравка широковещательных сообщений"
Сообщение от SIGurd Искать по авторуВ закладки on 17-Июл-02, 14:31  (MSK)
Помоему так:

int on = 1;

> bzero((char *) &serv_addr, sizeof(serv_addr));
> serv_addr.sin_family      = AF_INET;
> //serv_addr.sin_addr.s_addr = inet_addr("192.168.1.255");

serv_addr.sin_addr.s_addr = INADDR_ANY;

> serv_addr.sin_port        = htons(SERV_UDP_PORT);
> strncpy(mesg, "123456789", 8);

setsockopt( ss, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on) );

> while(1)
> {
>  sendto(ss, mesg, 9, 0, (struct sockaddr *) &serv_addr,izeof(serv_addr));
>  cout << "client: send mesage for server #\t" << mesg
><< endl;
>  sleep(5);
> }

И на сервере слушать адрес INADDR_ANY (т.е. любой)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру