I have a console program listed below that is working perfectly, taking in 2 different sets of data over ethernet and continually updating and displaying the data stream. The problem is, in my main program im using a form based setup and im having a hard time converting the code over to work in the form based environment.
Console App Code:
Current Form App Code:Code:Imports System.Net.Sockets Imports System.Text Module Module1 Sub Main() Dim tcpClient As New System.Net.Sockets.TcpClient() tcpClient.Connect("10.200.158.31", 14142) Dim networkStream As NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then ' Do a simple write. Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there") networkStream.Write(sendBytes, 0, sendBytes.Length) Do ' Read the NetworkStream into a byte buffer. Dim bytes(13) As Byte networkStream.Read(bytes, 0, CInt(13)) ' Output the data received from the host to the console. Dim returndata As String = Encoding.ASCII.GetString(bytes) Console.WriteLine((returndata)) Loop Else If Not networkStream.CanRead Then Console.WriteLine("cannot not write data to this stream") tcpClient.Close() Else If Not networkStream.CanWrite Then Console.WriteLine("cannot read data from this stream") tcpClient.Close() End If End If End If ' pause so user can view the console output Console.ReadLine() End Sub End Module
Im seeing some data printed to the output screen but not all of the data is there (its only printing at less then half the rate of the console, and im missing the second data set alltogether).Code:Imports System.Net.Sockets Imports System.Text Class TCPCli Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tcpClient As New System.Net.Sockets.TcpClient() tcpClient.Connect("10.200.158.31", 14142) Dim networkStream As NetworkStream = tcpClient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then ' Do a simple write. Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there") networkStream.Write(sendBytes, 0, sendBytes.Length) Dim bytes(20) As Byte Do ' Read the NetworkStream into a byte buffer. networkStream.Read(bytes, 0, CInt(20)) ' Output the data received from the host to the console. Dim returndata As String = Encoding.ASCII.GetString(bytes) Console.WriteLine((returndata)) Label1.Text = Convert.ToString(returndata) Loop End If End Sub End Class
Also im quite new to VB, and having a tough time trying to figure out how to initiate the procedure above without using a button click event, because when i click the button, the window freezes as its running a continuous neverending loop.




Reply With Quote
