Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > отправка широковещательных датаграмм


Автор: Annuta 3.7.2007, 11:41
Вот пытаюсь написать функцию поиска утсройтсва... тдея такая. Моя прога отправляет широковещательную дейтаграмму по UDP /я так понимаю что при такой отправке не нужен ИП/ - устройство - на другом конце её ловит - отсылает ответ. Всё вроде просто... но как всегда ни фига не работает... вот мои функции инициализации и отрпавки 
Код

BOOL DHCP::InitSocket_dhcp()
{
     char buff[1024];
     WSAStartup(0x0202,(WSADATA *) &buff[0]);//Инициализация Библиотеки Сокетов
    
      //связывание сокета с локальным адресом
           sockaddr_in local_addr;    

          local_addr.sin_family=PF_INET;
          local_addr.sin_addr.s_addr=inet_addr("255.255.255.255");;    
     local_addr.sin_port=htons(1234);

     socket_dhcp  = socket(PF_INET,SOCK_DGRAM, 0);//создание сокета      
 
 return 0;
}    
    
    DWORD DHCP::Send_dhcp()
    {
       sockaddr_in local_addr;    
  
               local_addr.sin_family=PF_INET;
        local_addr.sin_addr.s_addr=inet_addr("255.255.255.255");;    
        local_addr.sin_port=htons(67);
        int tmpSize = sizeof(local_addr);

        // посылка датаграммы клиенту
        int SendTo =  sendto(socket_dhcp,"11111", 5, 0,(sockaddr*)&local_addr, (socklen_t)tmpSize);        
        return SendTo;
    }
        
 
SendTo - возвращает -1 сокет создаётся.. всё ок ... структура заполняется... 
Не могу понять - что не так ???
и ещё поппутный вопросик - для такой отправки номер порта критичен ??? т.е. обязательно отправлять с 67 порта - или можно отправлять с любого ???          Спасибо!!!

Автор: MaXL 3.7.2007, 13:31
1. Вопрос по поводу порта я не понял. Что значит с какого порта отсылать? может имелось _в_ какой порт посылать? Тогда ответ: да, критичен.
2. Я не вижу чтобы ты перевела сокет в широковещательный режим.
Код

bool fBroadcast;
.......
setsockopt (socket_dhcp, SOL_SOCKET, SO_BROADCAST, (CHAR *) &fBroadcast, sizeof ( BOOL )) != 0 )

Ну и скорее всего всё должно заработать.

Автор: Annuta 4.7.2007, 08:19
ЗаарАБОТАЛО!!!!... Спасибо!!!... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)