.net - 使用线程监听 UDP 广播

标签 .net vb.net udp listener

我正在向 ..*.255 广播一条简单的消息(将我的 IP 的最后部分更改为 255),并且我正在尝试收听它。代码没有返回错误,但我没有收到任何内容。在wireshark中,我可以看到广播已正确发送,但每次使用不同的端口(我不知道这是否有什么大不了的)。这是我的代码的一些部分。

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

最佳答案

This article似乎几乎完全符合您想要做的事情,并且通过代码中的大量注释很好地解释了它。

关于.net - 使用线程监听 UDP 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635687/

相关文章:

c# - 如何在 C# 中从 XML 文件创建 DOM 树?

c# - 从 C# 代码隐藏动态添加到 DIV 标签的链接

c# - 如何在另一个窗体(如 Visual Studio)中显示窗体

Qt QUdpSocket readyRead() 信号未触发

c++ - 如何在其他线程中运行 io_service?

.net - 创建与 ASPNetUsers 表和自定义的关系

c# - 局部变量与实例变量

asp.net - JQuery Mobile 日期选择器不在 Chrome 中显示日期

确认脚本中的 Javascript IIF

C++:我们如何通过 UDP 在结构中发送 float 据并接收它?