SOCKET编程, Visual Studio 2013, Visual Basic, UDP收发,单播,广播,接收超时,发送超时,blocking mode



Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

 Dim ip As String = txt_Dst_IP.Text '""
        Dim port As Integer = CType(txt_Port.Text, Integer)
        Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
        Dim udpIP As IPAddress = IPAddress.Parse(ip)
        Dim udp_endpoint As New IPEndPoint(udpIP, port)
        Dim groupEP As New IPEndPoint(IPAddress.Any, port)
        Dim senderRemote As EndPoint = CType(groupEP, EndPoint)
        Dim WistronId As String = ""
        Try
            s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, True)    ‘设定允许socket广播
            s.Bind(groupEP) ‘要收数据包,必须绑定
            s.SendTimeout = 1000 '设定发送超时为1s
            s.SendTo(s_buf, udp_endpoint) '发送, s_buf是字节数组名

            Dim msg() As Byte = New [Byte](255) {} '定义一个255字节的接收缓冲区
            s.ReceiveTimeout = 200 '设定接收超时为200ms
            Dim i As Integer = 0
            While i < 16
                i += 1
                s.ReceiveFrom(msg, senderRemote)
                Dim str As String = ""
                str = Encoding.ASCII.GetString(msg) 'CStr(msg(i))
                groupEP = CType(senderRemote, IPEndPoint)     '为了获取接收到的数据包源IP
                If msg(25) = &H99 And msg(26) = &H2B Then
                    For n As Integer = 24 To 26 Step 1
                        WistronId &= "  " + Hex(msg(n))
                    Next
                    WistronId = "Wistron ID: " + WistronId
                Else
                    WistronId = "   Not-RCB-Device"
                End If
                Lstbox_receive.Items.Add(i.ToString & "    " & groupEP.Address.ToString & "  " & WistronId)
                WistronId = ""
            End While
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "提示")
        Finally
            s.Close()
        End Try

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值