2011-06-09 5 views
4

J'essaie d'envoyer une diffusion UDP mais wireshark ne signale aucun trafic. Voici l'extrait qui fait le envoi:Pourquoi ma diffusion UDP échoue-t-elle?

void SendBroadcast() 
{ 
    String^ ip = "255.255.255.255"; 
    int port = 30718; 
    String^ message = "test"; 

    UdpClient^ udpClient = gcnew UdpClient(); 
    udpClient->EnableBroadcast = true; 
    IPEndPoint^ ipDest = gcnew IPEndPoint(IPAddress::Parse(ip), port); 
    cli::array<unsigned char>^ dgram = Encoding::ASCII->GetBytes(message); 
    int bytesSent = udpClient->Send(dgram, dgram->Length, ipDest); 

    if(bytesSent != message->Length) 
    { 
     // Failed to send 
     Console::WriteLine(String::Format("Error: Failed to send all data (bytes sent: {0})", bytesSent)); 
    } 
    else 
    { 
     Console::WriteLine(String::Format("Bytes sent: {0}", bytesSent)); 
    } 
} 

Il rapporte qu'il a envoyé les données (4 octets), alors pourquoi ne pas Wireshark voir le trafic? J'ai essayé avec une autre application qui diffuse sur le même port et le trafic de cette application se montre bien.

Qu'est-ce qui me manque?

[Modifier] Je viens repéré un poste sur le fond de the UdpClient documentation qui stipule que l'envoi à 255.255.255.255 sur une machine Windows 7 ne fonctionne pas. Cela ne peut pas être vrai du o/s dans son ensemble si ou la diffusion de l'autre application à 255.255.255.255 échouerait?

+0

Recevez-vous sur l'une des machines dans le domaine de la diffusion? –

+0

Je regardais juste le trafic sortant. Si cela fonctionne, les machines distantes enverront une réponse qui apparaît également sur wireshark de l'autre application. –

+0

Si je change l'adresse de diffusion à la portée que je vise (10.10.5.255) cela fonctionne bien alors pourquoi est-il défaillant pour 255.255.255.255? –

Répondre

4

gère Windows 7 diffusion 255.255.255.255 d'une manière différente. Plus d'infos ici: Send UDP broadcast on Windows 7

+0

Donc vous dites que je dois me lier à une adresse IP locale pour que Windows 7 sache sur quelle carte envoyer? –

+1

Exactement, ou utiliser sous-réseau de diffusion au lieu de 255.255.255.255 – Ladislav

+0

+1/acceptés: Je lié à chaque adresse locale à son tour et il :-) –