Results 1 to 7 of 7

Thread: TcpListener Freeze Problem

Threaded View

  1. #1

    Thread Starter
    Member
    Join Date
    Aug 2008
    Posts
    32

    TcpListener Freeze Problem

    I am creating a TCP Listener and listener and I am using the code from the MSDN pages located here:

    For some reason I am having a problem with the listener code freezing up on me. Does anyone know what might be causing this?

    Here is the Listener:

    Code:
    Class MyTcpListener
    
        Public Shared Sub Main()
    
            Dim server As TcpListener
            server = Nothing
            Try
                ' Set the TcpListener on port 13000.
                Dim port As Int32 = 13000
                Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
    
                server = New TcpListener(localAddr, port)
    
                ' Start listening for client requests.
                server.Start()
    
                ' Buffer for reading data
                Dim bytes(1024) As Byte
                Dim data As String = Nothing
    
                ' Enter the listening loop.
                While True
                    Form2.TextBox2.Text = "Waiting for a connection... "
    
                    ' Perform a blocking call to accept requests.
                    ' You could also user server.AcceptSocket() here.
                    Dim client As TcpClient = server.AcceptTcpClient()
                    Form2.TextBox2.Text = "Connected!"
    
                    data = Nothing
    
                    ' Get a stream object for reading and writing
                    Dim stream As NetworkStream = client.GetStream()
    
                    Dim i As Int32
    
                    ' Loop to receive all the data sent by the client.
                    i = stream.Read(bytes, 0, bytes.Length)
                    While (i <> 0)
                        ' Translate data bytes to a ASCII string.
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                        Form2.TextBox2.Text = "Received: {0}" & data
    
                        ' Process the data sent by the client.
                        data = data.ToUpper()
                        Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)
    
                        ' Send back a response.
                        stream.Write(msg, 0, msg.Length)
                        Form2.TextBox2.Text = "Sent: {0}" & data
    
                        i = stream.Read(bytes, 0, bytes.Length)
    
                    End While
    
                    ' Shutdown and end connection
                    client.Close()
                End While
            Catch e As SocketException
                Console.WriteLine("SocketException: {0}", e)
            Finally
                server.Stop()
            End Try
    
            Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
            Console.Read()
        End Sub 'Main
    
    End Class 'MyTcpListener
    Here is the Client:
    Code:
    Shared Sub Connect(ByVal server As [String], ByVal message As [String])
            Try
                ' Create a TcpClient.
                ' Note, for this client to work you need to have a TcpServer 
                ' connected to the same address as specified by the server, port
                ' combination.
                Dim port As Int32 = 13000
                Dim client As New TcpClient(server, port)
    
                ' Translate the passed message into ASCII and store it as a Byte array.
                Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)
    
                ' Get a client stream for reading and writing.
                '  Stream stream = client.GetStream();
                Dim stream As NetworkStream = client.GetStream()
    
                ' Send the message to the connected TcpServer. 
                stream.Write(data, 0, data.Length)
    
                Console.WriteLine("Sent: {0}", message)
    
                ' Receive the TcpServer.response.
                ' Buffer to store the response bytes.
                data = New [Byte](256) {}
    
                ' String to store the response ASCII representation.
                Dim responseData As [String] = [String].Empty
    
                ' Read the first batch of the TcpServer response bytes.
                Dim bytes As Int32 = stream.Read(data, 0, data.Length)
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
                Console.WriteLine("Received: {0}", responseData)
    
                ' Close everything.
                stream.Close()
                client.Close()
            Catch e As ArgumentNullException
                Console.WriteLine("ArgumentNullException: {0}", e)
            Catch e As SocketException
                Console.WriteLine("SocketException: {0}", e)
            End Try
    
            Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
            Console.Read()
        End Sub 'Connect
    The Exception I am getting is
    Code:
    A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll

    Any other code you need just let me know. Thanks in advance for the replies.
    Last edited by g19max1; Jan 30th, 2009 at 11:26 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width