利用UDP协议收发信息

 

  1
  2    '------------------//接收远程数据
 13Imports System.Net
 14Imports System.Net.Sockets
 15Imports System.Threading
 16Imports System.Text
 17Public 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
134End Class

 1Imports System.Net
 2Imports System.Threading
 3Imports System.Text
 4Imports System.Net.Sockets
 5Imports AD_GoodsInfo
 6Public 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

21End Class


 1'----------------------------发数据
 2
 3Imports System.Net
 4Imports System.Threading
 5Imports System.Text
 6Imports System.Net.Sockets
 7Imports AD_GoodsInfo
 8Public 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 StringByRef 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

44End Class

45

 1Imports System.Net
 2Imports System.Net.Sockets
 3Imports System.Threading
 4Imports System.Text
 5Public 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 StringByVal myIP As StringByVal 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

26End Class

27

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>
posted @ 2007-02-09 22:01  yongwnet  阅读(522)  评论(0编辑  收藏  举报