|
本帖最后由 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 [Byte]()
- 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
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|