Advertisement
Jaflem92

Network XML

Jul 8th, 2012
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 5.22 KB | None | 0 0
  1. Imports System.Net.Sockets
  2. Imports System.Net
  3. Imports System.Xml
  4. Imports System.IO
  5.  
  6. Public Class frmMain
  7.  
  8.     Const Title As String = "Test Network XML"
  9.  
  10.     Dim Myport As Integer = 20000
  11.     Dim count As Integer = 1
  12.  
  13.     Dim TCPclient As New TcpClient
  14.     Dim TCPListener As TcpListener
  15.     Dim IP As IPAddress
  16.  
  17.     Public Alive As Boolean = True
  18.  
  19.     Private Delegate Sub DS(ByVal Name As String, ByVal Test As String)
  20.  
  21.     Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  22.         setUp()
  23.  
  24.         TitleUpdate(count)
  25.  
  26.         Dim Server As New Threading.Thread(AddressOf ServerLoop)
  27.         Server.Start()
  28.     End Sub
  29.  
  30.     Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  31.         Alive = False
  32.     End Sub
  33.  
  34.     ''' <summary>
  35.     ''' Creates a new port number by randow value between 20,000 and 30,000. creates the local listener
  36.     ''' </summary>
  37.     ''' <remarks>For use when form starts up</remarks>
  38.     Private Sub setUp()
  39.         Dim gen As New Random
  40.         Myport = gen.Next(20000, 30000)
  41.         tbxMyPort.Text = Myport
  42.  
  43.         IP = IPAddress.Parse(tbxHostIP.Text)
  44.         TCPListener = New TcpListener(IP, Myport)
  45.         TCPListener.Start(8)
  46.  
  47.     End Sub
  48.  
  49.     ''' <summary>
  50.     ''' Creetes a new thread to handle another window
  51.     ''' </summary>
  52.     ''' <param name="sender"></param>
  53.     ''' <param name="e"></param>
  54.     ''' <remarks></remarks>
  55.     Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click
  56.         count = count + 1
  57.         Dim T As New System.Threading.Thread(AddressOf Newform)
  58.         T.Start(count)
  59.     End Sub
  60.  
  61.     ''' <summary>
  62.     ''' Creates a new window and performs a loop as long as the window is "alive"
  63.     ''' </summary>
  64.     ''' <param name="xCount">The current number of windows created</param>
  65.     ''' <remarks>For use by a new thread</remarks>
  66.     Private Sub Newform(ByVal xCount As Integer)
  67.         Dim frmNew As New frmMain
  68.  
  69.         frmNew.Show()
  70.         frmNew.TitleUpdate(xCount)
  71.         While frmNew.Alive
  72.             Application.DoEvents()
  73.         End While
  74.     End Sub
  75.  
  76.     ''' <summary>
  77.     ''' Updates the title in the form's window
  78.     ''' </summary>
  79.     ''' <param name="xcount">The current number of windows created</param>
  80.     ''' <remarks></remarks>
  81.     Public Sub TitleUpdate(ByVal xcount As Integer)
  82.         count = xcount
  83.         Me.Text = Title & " - " & count
  84.     End Sub
  85.  
  86.     ''' <summary>
  87.     ''' Loops while form is "Alive". Accepts incoming sockets and has the dataset dsNetwork read stream. Then reads last row sent and displays it to tbxDisplay with a delegate.
  88.     ''' </summary>
  89.     ''' <remarks></remarks>
  90.     Private Sub ServerLoop()
  91.  
  92.         While Me.Alive
  93.             Try
  94.                 Dim tcpclient As New TcpClient
  95.  
  96.                 tcpclient = TCPListener.AcceptTcpClient()
  97.  
  98.                 Dim netstream As NetworkStream = tcpclient.GetStream()
  99.  
  100.                 dsNetwork.ReadXml(netstream)
  101.  
  102.                 netstream.Close()
  103.                 tcpclient.Close()
  104.             Catch ex As Exception
  105.                 MessageBox.Show(ex.Message.ToString & vbCrLf & ex.InnerException.ToString, "Error")
  106.             End Try
  107.  
  108.             Dim name As String
  109.             Dim text As String
  110.  
  111.             Dim cRows As Integer = dsNetwork.Tables("Network").Rows.Count - 1
  112.  
  113.             name = dsNetwork.Tables("Network").Rows(cRows).Item("Name")
  114.             text = dsNetwork.Tables("Network").Rows(cRows).Item("Text")
  115.  
  116.             Dim del As DS
  117.             del = New DS(AddressOf DelText)
  118.             del.Invoke(name, text)
  119.  
  120.  
  121.  
  122.         End While
  123.  
  124.     End Sub
  125.  
  126.     ''' <summary>
  127.     ''' Delegate sub. Perpose format and display passed values
  128.     ''' </summary>
  129.     ''' <param name="Name"></param>
  130.     ''' <param name="Text"></param>
  131.     ''' <remarks>To be called by delegate only</remarks>
  132.     Private Sub DelText(ByVal Name As String, ByVal Text As String)
  133.         tbxDisplay.Text = String.Format("Name: {0}" & vbCrLf & "Text: {1}", Name, Text) 'is not thread safe
  134.     End Sub
  135.  
  136.     ''' <summary>
  137.     ''' Reads info from both name and text Textboxs and puts them into a dataset dsNetwork. Sends the data over TCP socket using xml.
  138.     ''' </summary>
  139.     ''' <param name="sender"></param>
  140.     ''' <param name="e"></param>
  141.     ''' <remarks></remarks>
  142.     Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
  143.  
  144.         Dim Row As DataRow = dsNetwork.Tables("Network").NewRow()
  145.  
  146.         Row("Name") = tbxName
  147.         Row("Text") = tbxText
  148.         dsNetwork.Tables("Network").Rows.Add(Row)
  149.         Try
  150.             TCPclient.Connect(IP, CInt(tbxPort.Text))
  151.  
  152.             Dim netstream As NetworkStream = TCPclient.GetStream()
  153.  
  154.             dsNetwork.WriteXml(netstream)
  155.             dsNetwork.Tables("Network").Clear()
  156.  
  157.             netstream.Flush()
  158.             netstream.Close()
  159.         Catch ex As Exception
  160.             MessageBox.Show(ex.Message.ToString & vbCrLf & ex.InnerException.ToString, "Error")
  161.         Finally
  162.             TCPclient.Close()
  163.         End Try
  164.  
  165.  
  166.     End Sub
  167. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement