利用UDP协议收发信息
1
2
'------------------//接收远程数据
13
Imports System.Net
14
Imports System.Net.Sockets
15
Imports System.Threading
16
Imports System.Text
17
Public Class frmMain
18
19
Dim myPort As Integer '端口
20
Dim groupIP As IPAddress
21
Dim intListenPort As Integer
22
Dim inPort As Integer
23
Dim strAddress As String
24
Dim groupEP As IPEndPoint
25
Dim listenUdp As UdpClient
26
Dim listenThread As Threading.Thread
27
Delegate Sub SetTextCallback(ByVal [text] As String)
28
29
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
30
myRecevice() '侦听
31
End Sub
32
Private Sub myRecevice()
33
listenThread = New Thread(AddressOf BeginListen)
34
listenThread.Start()
35
End Sub
36
37
Private Sub BeginListen()
38
Dim bteReceviceData() As Byte
39
Dim strReceviceData As String
40
new class1(). GetIpPort(myPort) '端口号
41
groupIP = IPAddress.Parse(Dns.GetHostAddresses(Dns.GetHostName())(0).ToString())
42
intListenPort = myPort 'Integer.Parse("34567")
43
44
groupEP = New IPEndPoint(groupIP, intListenPort)
45
listenUdp = New UdpClient(intListenPort)
46
'listenUdp.JoinMulticastGroup(groupIP)
47
48
'MsgBox("开始监听
")
49
50
Do
51
bteReceviceData = listenUdp.Receive(groupEP)
52
strReceviceData = Encoding.Unicode.GetString(bteReceviceData)
53
'Me.Label1.Text = strReceviceData
54
Me.SetLbl(strReceviceData) '线程安全处理
55
Loop
56
End Sub
57
58
Private Sub SetLbl(ByVal [text] As String)
59
Dim arr() As String
60
arr = Split([text], ",")
61
62
If Me.lblBarcode.InvokeRequired Then '商品编号
63
Dim d As New SetTextCallback(AddressOf SetLbl)
64
Me.Invoke(d, New Object() {[text]})
65
Else
66
Me.lblBarcode.Text = arr(0).ToString
67
End If
68
If Me.lblGoodsName.InvokeRequired Then '商品名称
69
Dim d As New SetTextCallback(AddressOf SetLbl)
70
Me.Invoke(d, New Object() {[text]})
71
Else
72
Me.lblGoodsName.Text = arr(1).ToString
73
End If
74
If Me.lblOnePrice.InvokeRequired Then '单价
75
Dim d As New SetTextCallback(AddressOf SetLbl)
76
Me.Invoke(d, New Object() {[text]})
77
Else
78
Me.lblOnePrice.Text = Format(CDbl(arr(2).ToString), "0.00")
79
End If
80
If Me.lblOneQuant.InvokeRequired Then '数量
81
Dim d As New SetTextCallback(AddressOf SetLbl)
82
Me.Invoke(d, New Object() {[text]})
83
Else
84
Me.lblOneQuant.Text = arr(3).ToString
85
End If
86
If Me.lblOneAPrice.InvokeRequired Then '小计
87
Dim d As New SetTextCallback(AddressOf SetLbl)
88
Me.Invoke(d, New Object() {[text]})
89
Else
90
Me.lblOneAPrice.Text = arr(4).ToString
91
End If
92
If Me.lblOneZk.InvokeRequired Then '单品折扣
93
Dim d As New SetTextCallback(AddressOf SetLbl)
94
Me.Invoke(d, New Object() {[text]})
95
Else
96
Me.lblOneZk.Text = Format(CDbl(arr(5).ToString), "0.00")
97
End If
98
If Me.lblDJ.InvokeRequired Then '小票号
99
Dim d As New SetTextCallback(AddressOf SetLbl)
100
Me.Invoke(d, New Object() {[text]})
101
Else
102
Me.lblDJ.Text = arr(6).ToString
103
End If
104
105
If Me.lblQuant.InvokeRequired Then '总数量
106
Dim d As New SetTextCallback(AddressOf SetLbl)
107
Me.Invoke(d, New Object() {[text]})
108
Else
109
Me.lblQuant.Text = arr(7).ToString
110
End If
111
112
If Me.lblPrice.InvokeRequired Then '总价格
113
Dim d As New SetTextCallback(AddressOf SetLbl)
114
Me.Invoke(d, New Object() {[text]})
115
Else
116
Me.lblPrice.Text = Format(CDbl(arr(8).ToString), "0.00")
117
End If
118
119
If Me.lblZK.InvokeRequired Then '总折扣
120
Dim d As New SetTextCallback(AddressOf SetLbl)
121
Me.Invoke(d, New Object() {[text]})
122
Else
123
Me.lblZK.Text = Format(CDbl(arr(9).ToString), "0.00")
124
End If
125
126
'de.InvokeRequired Then
127
'Dim d As New SetTextCallback(AddressOf SetLbl)
128
'Me.Invoke(d, New Object() {[text]})
129
'Else
130
'Me.lblBarcode.Text = [text]
131
'End If
132
End Sub
133
134
End Class

2
'------------------//接收远程数据13
Imports System.Net14
Imports System.Net.Sockets15
Imports System.Threading16
Imports System.Text17
Public Class frmMain18

19
Dim myPort As Integer '端口20
Dim groupIP As IPAddress21
Dim intListenPort As Integer22
Dim inPort As Integer23
Dim strAddress As String24
Dim groupEP As IPEndPoint25
Dim listenUdp As UdpClient26
Dim listenThread As Threading.Thread27
Delegate Sub SetTextCallback(ByVal [text] As String)28

29
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 30
myRecevice() '侦听31
End Sub32
Private Sub myRecevice()33
listenThread = New Thread(AddressOf BeginListen)34
listenThread.Start()35
End Sub36

37
Private Sub BeginListen()38
Dim bteReceviceData() As Byte39
Dim strReceviceData As String40
new class1(). GetIpPort(myPort) '端口号41
groupIP = IPAddress.Parse(Dns.GetHostAddresses(Dns.GetHostName())(0).ToString())42
intListenPort = myPort 'Integer.Parse("34567")43

44
groupEP = New IPEndPoint(groupIP, intListenPort)45
listenUdp = New UdpClient(intListenPort)46
'listenUdp.JoinMulticastGroup(groupIP)47

48
'MsgBox("开始监听
")49

50
Do51
bteReceviceData = listenUdp.Receive(groupEP)52
strReceviceData = Encoding.Unicode.GetString(bteReceviceData)53
'Me.Label1.Text = strReceviceData54
Me.SetLbl(strReceviceData) '线程安全处理55
Loop56
End Sub57

58
Private Sub SetLbl(ByVal [text] As String)59
Dim arr() As String60
arr = Split([text], ",")61

62
If Me.lblBarcode.InvokeRequired Then '商品编号63
Dim d As New SetTextCallback(AddressOf SetLbl)64
Me.Invoke(d, New Object() {[text]})65
Else66
Me.lblBarcode.Text = arr(0).ToString67
End If68
If Me.lblGoodsName.InvokeRequired Then '商品名称69
Dim d As New SetTextCallback(AddressOf SetLbl)70
Me.Invoke(d, New Object() {[text]})71
Else72
Me.lblGoodsName.Text = arr(1).ToString73
End If74
If Me.lblOnePrice.InvokeRequired Then '单价75
Dim d As New SetTextCallback(AddressOf SetLbl)76
Me.Invoke(d, New Object() {[text]})77
Else78
Me.lblOnePrice.Text = Format(CDbl(arr(2).ToString), "0.00")79
End If80
If Me.lblOneQuant.InvokeRequired Then '数量81
Dim d As New SetTextCallback(AddressOf SetLbl)82
Me.Invoke(d, New Object() {[text]})83
Else84
Me.lblOneQuant.Text = arr(3).ToString85
End If86
If Me.lblOneAPrice.InvokeRequired Then '小计87
Dim d As New SetTextCallback(AddressOf SetLbl)88
Me.Invoke(d, New Object() {[text]})89
Else90
Me.lblOneAPrice.Text = arr(4).ToString91
End If92
If Me.lblOneZk.InvokeRequired Then '单品折扣93
Dim d As New SetTextCallback(AddressOf SetLbl)94
Me.Invoke(d, New Object() {[text]})95
Else96
Me.lblOneZk.Text = Format(CDbl(arr(5).ToString), "0.00")97
End If98
If Me.lblDJ.InvokeRequired Then '小票号99
Dim d As New SetTextCallback(AddressOf SetLbl)100
Me.Invoke(d, New Object() {[text]})101
Else102
Me.lblDJ.Text = arr(6).ToString103
End If104

105
If Me.lblQuant.InvokeRequired Then '总数量106
Dim d As New SetTextCallback(AddressOf SetLbl)107
Me.Invoke(d, New Object() {[text]})108
Else109
Me.lblQuant.Text = arr(7).ToString110
End If111

112
If Me.lblPrice.InvokeRequired Then '总价格113
Dim d As New SetTextCallback(AddressOf SetLbl)114
Me.Invoke(d, New Object() {[text]})115
Else116
Me.lblPrice.Text = Format(CDbl(arr(8).ToString), "0.00")117
End If118

119
If Me.lblZK.InvokeRequired Then '总折扣120
Dim d As New SetTextCallback(AddressOf SetLbl)121
Me.Invoke(d, New Object() {[text]})122
Else123
Me.lblZK.Text = Format(CDbl(arr(9).ToString), "0.00")124
End If125

126
'de.InvokeRequired Then127
'Dim d As New SetTextCallback(AddressOf SetLbl)128
'Me.Invoke(d, New Object() {[text]})129
'Else130
'Me.lblBarcode.Text = [text]131
'End If132
End Sub133

134
End Class 1
Imports System.Net
2
Imports System.Threading
3
Imports System.Text
4
Imports System.Net.Sockets
5
Imports AD_GoodsInfo
6
Public Class Form1
7
8
''' <summary>
9
''' 取目标机端口
10
''' </summary>
11
''' <param name="myPort"></param>
12
''' <remarks></remarks>
13
Public Sub GetPort(ByRef myPort As Integer)
14
Dim xmlDoc As New Xml.XmlDocument()
15
xmlDoc.Load("sys.xml")
16
Dim nodeList As Xml.XmlNodeList = xmlDoc.SelectSingleNode("sys").ChildNodes
17
If Not nodeList.Item(0).Name Is Nothing Then '判断结点是否存在
18
myPort = CType(nodeList.Item(0).Item("Port").InnerText, Integer)
19
End If
20
End Sub
21
End Class
Imports System.Net2
Imports System.Threading3
Imports System.Text4
Imports System.Net.Sockets5
Imports AD_GoodsInfo6
Public Class Form17

8
''' <summary>9
''' 取目标机端口10
''' </summary>11
''' <param name="myPort"></param>12
''' <remarks></remarks>13
Public Sub GetPort(ByRef myPort As Integer)14
Dim xmlDoc As New Xml.XmlDocument()15
xmlDoc.Load("sys.xml")16
Dim nodeList As Xml.XmlNodeList = xmlDoc.SelectSingleNode("sys").ChildNodes17
If Not nodeList.Item(0).Name Is Nothing Then '判断结点是否存在18
myPort = CType(nodeList.Item(0).Item("Port").InnerText, Integer)19
End If20
End Sub21
End Class 1
'----------------------------发数据
2
3
Imports System.Net
4
Imports System.Threading
5
Imports System.Text
6
Imports System.Net.Sockets
7
Imports AD_GoodsInfo
8
Public Class Form1
9
10
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
11
Dim info As String
12
Dim myIP As String = "" 'IP地址
13
Dim myPort As Integer '端口
14
info = Me.txtBarcode.Text.Trim() + "," _
15
+ Me.txtGoodsName.Text.Trim() + "," _
16
+ Me.txtOnePrice.Text.Trim() + "," _
17
+ Me.txtOneQuan.Text.Trim() + "," _
18
+ Me.txtOneAPrice.Text.Trim() + "," _
19
+ Me.txtOneZK.Text.Trim() + "," _
20
+ Me.txtDJ.Text.Trim() + "," _
21
+ Me.txtQuan.Text.Trim() + "," _
22
+ Me.txtPrice.Text.Trim() + "," _
23
+ Me.txtZK.Text.Trim()
24
Me.GetIpPort(myIP, myPort)
25
26
Dim s As SendMsg = New SendMsg()
27
s.SendData(info, myIP, myPort)
28
29
''' <summary>
30
''' 取目标机的IP,端口
31
''' </summary>
32
''' <param name="myIP"></param>
33
''' <param name="myPort"></param>
34
''' <remarks></remarks>
35
Public Sub GetIpPort(ByRef myIP As String, ByRef myPort As Integer)
36
Dim xmlDoc As New Xml.XmlDocument()
37
xmlDoc.Load("sys.xml")
38
Dim nodeList As Xml.XmlNodeList = xmlDoc.SelectSingleNode("sys").ChildNodes
39
If Not nodeList.Item(0).Name Is Nothing Then '判断结点是否存在
40
myIP = nodeList.Item(0).Item("IP").InnerText
41
myPort = CType(nodeList.Item(0).Item("Port").InnerText, Integer)
42
End If
43
End Sub
44
End Class
45
'----------------------------发数据2

3
Imports System.Net4
Imports System.Threading5
Imports System.Text6
Imports System.Net.Sockets7
Imports AD_GoodsInfo8
Public Class Form19

10
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click11
Dim info As String12
Dim myIP As String = "" 'IP地址13
Dim myPort As Integer '端口14
info = Me.txtBarcode.Text.Trim() + "," _15
+ Me.txtGoodsName.Text.Trim() + "," _16
+ Me.txtOnePrice.Text.Trim() + "," _17
+ Me.txtOneQuan.Text.Trim() + "," _18
+ Me.txtOneAPrice.Text.Trim() + "," _19
+ Me.txtOneZK.Text.Trim() + "," _20
+ Me.txtDJ.Text.Trim() + "," _21
+ Me.txtQuan.Text.Trim() + "," _22
+ Me.txtPrice.Text.Trim() + "," _23
+ Me.txtZK.Text.Trim()24
Me.GetIpPort(myIP, myPort)25

26
Dim s As SendMsg = New SendMsg()27
s.SendData(info, myIP, myPort)28

29
''' <summary>30
''' 取目标机的IP,端口31
''' </summary>32
''' <param name="myIP"></param>33
''' <param name="myPort"></param>34
''' <remarks></remarks>35
Public Sub GetIpPort(ByRef myIP As String, ByRef myPort As Integer)36
Dim xmlDoc As New Xml.XmlDocument()37
xmlDoc.Load("sys.xml")38
Dim nodeList As Xml.XmlNodeList = xmlDoc.SelectSingleNode("sys").ChildNodes39
If Not nodeList.Item(0).Name Is Nothing Then '判断结点是否存在40
myIP = nodeList.Item(0).Item("IP").InnerText41
myPort = CType(nodeList.Item(0).Item("Port").InnerText, Integer)42
End If43
End Sub44
End Class45

1
Imports System.Net
2
Imports System.Net.Sockets
3
Imports System.Threading
4
Imports System.Text
5
Public Class SendMsg
6
7
''' <summary>
8
''' 发送数据
9
''' </summary>
10
''' <param name="sendInfo"></param>
11
''' <param name="myIP"></param>
12
''' <param name="myPort"></param>
13
''' <remarks></remarks>
14
Public Sub SendData(ByVal sendInfo As String, ByVal myIP As String, ByVal myPort As Integer)
15
Try
16
Dim dataSend() As Byte
17
Dim myUdpClient As UdpClient
18
myUdpClient = New UdpClient(myIP, myPort)
19
dataSend = System.Text.Encoding.Unicode.GetBytes(sendInfo)
20
myUdpClient.Send(dataSend, dataSend.Length)
21
myUdpClient.Close()
22
Catch ex As Exception
23
'发送异常处理
24
End Try
25
End Sub
26
End Class
27
Imports System.Net2
Imports System.Net.Sockets3
Imports System.Threading4
Imports System.Text5
Public Class SendMsg6

7
''' <summary>8
''' 发送数据9
''' </summary>10
''' <param name="sendInfo"></param>11
''' <param name="myIP"></param>12
''' <param name="myPort"></param>13
''' <remarks></remarks>14
Public Sub SendData(ByVal sendInfo As String, ByVal myIP As String, ByVal myPort As Integer)15
Try16
Dim dataSend() As Byte17
Dim myUdpClient As UdpClient18
myUdpClient = New UdpClient(myIP, myPort)19
dataSend = System.Text.Encoding.Unicode.GetBytes(sendInfo)20
myUdpClient.Send(dataSend, dataSend.Length)21
myUdpClient.Close()22
Catch ex As Exception23
'发送异常处理24
End Try25
End Sub26
End Class27

1
<?xml version="1.0" encoding="gb2312"?>
2
<sys>
3
<set>
4
<IP intro="目标机的IP">192.168.1.49</IP>
5
<Port intro="目标机端口号">34567</Port>
6
</set>
7
</sys>
<?xml version="1.0" encoding="gb2312"?>2
<sys>3
<set>4
<IP intro="目标机的IP">192.168.1.49</IP>5
<Port intro="目标机端口号">34567</Port>6
</set>7
</sys>


浙公网安备 33010602011771号