90999 发表于 2016-9-18 20:11:17

VB.NET 2008 UDP 收发 简例

本帖最后由 90999 于 2016-9-18 20:11 编辑

网上VB.NET 的UDP 收发写得神烦神烦的,自己搞个。



Imports System.Net
Imports System.Text

Public Class Form1



    Dim ws3 As New Net.Sockets.UdpClient                ‘此处可以不设定端口   WS3只作为SEND 口使用
    Dim ws4 As New Net.Sockets.UdpClient(19730) '本地接收端口                WS4只作为GET口使用


    Private Sub Form1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Leave

      ws3.Close()
      ws4.Close()
      tck.Stop()

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

      ws3.Connect("255.255.255.255", 5678)    '指定发送目标IP及端口255.255.255.255 是广播用IP


      tck.Interval = 10                         '刷新接收口速度 10ms收一次
      tck.Start()

    End Sub


    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click    '发送


      Dim aa As ()

      aa = Encoding.ASCII.GetBytes(DateAndTime.Now.Second * 1000 + DateAndTime.Now.Millisecond)

      ws3.Send(aa, aa.Length)


      '   T1.Text = ""


    End Sub




      ’在FORM1里放置一个名为TCK的TIMER控件,周期性读取数据,也可以必须单独新开一个线程。

    Private Sub tck_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tck.Tick'接收

      Dim aa As String
      Dim ip As New IPEndPoint(IPAddress.Any, 0)'指定监听目标IP


      If ws4.Available Then                ‘收到数据包长度大于0

            While ws4.Available               '把库存取干净


                aa = Encoding.ASCII.GetString(ws4.Receive(ip)) ' 一次只取1组包


                T1.Text = T1.Text & " 内容 " & aa & " 长度 " & aa.Length & vbCrLf                ’文本框内容

            End While

      End If


    End Sub
End Class



th1993 发表于 2016-9-18 23:22:31

楼主好人{:handshake:}

yongke 发表于 2019-3-3 21:09:06

已收藏,非常感谢!
页: [1]
查看完整版本: VB.NET 2008 UDP 收发 简例