L'écoute d'une diffusion UDP avec les threads

Je suis la diffusion d'un message simple à ..*.255 (changement de 255 la dernière partie de mon ip) et je suis en train de l'écouter. le code renvoie pas d'erreur mais je ne reçois rien. Dans wireshark, je peux voir la broacast est envoyé correctement, mais avec un port différent à chaque fois (je ne sais pas si c'est une grosse affaire). Voici quelques parties de mon code.

Private Sub connect()
setip()
btnsend.Enabled = True
btndisconnect.Enabled = True
btnconnect.Enabled = False
receive()
txtmsg.Enabled = True
End Sub
Sub receive()
Try
SocketNO = port
rClient = New System.Net.Sockets.UdpClient(SocketNO)
rClient.EnableBroadcast = True
ThreadReceive = _
New System.Threading.Thread(AddressOf receivemessages)
If ThreadReceive.IsAlive = False Then
ThreadReceive.Start()
Else
ThreadReceive.Resume()
End If
Catch ex As Exception
MsgBox("Error")
End Try
End Sub
Sub receivemessages()
Dim receiveBytes As Byte() = rClient.Receive(rip)
Dim BitDet As BitArray
BitDet = New BitArray(receiveBytes)
Dim strReturnData As String = _
System.Text.Encoding.Unicode.GetString(receiveBytes)
MsgBox(strReturnData.ToString)
End Sub
Private Sub setip()
hostname = System.Net.Dns.GetHostName
myip = IPAddress.Parse(System.Net.Dns.GetHostEntry(hostname).AddressList(1).ToString)
ipsplit = myip.ToString.Split(".".ToCharArray())
ipsplit(3) = 255
broadcastip = IPAddress.Parse(ipsplit(0) & "." & ipsplit(1) & "." + ipsplit(2) + "." + ipsplit(3))
iep = New IPEndPoint(broadcastip, port)
End Sub
Sub sendmsg()
Dim msg As Byte()
MsgBox(myip.ToString)
sclient = New UdpClient
sclient.EnableBroadcast = True
msg = Encoding.ASCII.GetBytes(txtmsg.Text)
sclient.Send(msg, msg.Length, iep)
sclient.Close()
txtmsg.Clear()
End Sub
Il est possible que .255 n'est pas la bonne adresse de diffusion, il doit être l'IP par un ou binaire avec le complément du Masque de réseau IP|~NM. La plupart des systèmes suffit d'utiliser la diffusion globale de 255.255.255.255. Aussi garder à l'esprit émissions n'est généralement pas la route et ne va pas le faire via une passerelle ou un routeur.

OriginalL'auteur fbernier | 2009-03-11