networking question... simple sockets stuff..

  • Thread starter Thread starter Brian Henry
  • Start date Start date
B

Brian Henry

Hello,

I was tring to learn socket's (being i never used them before) and have a
simple question. I want to create a listner that will get any data recieved
and print it out. I've been able to get it to recieve only one line of data,
but the next one i send to it wont be printed like the 1st one. I had a
listner running in a thread, does anyone have a simple listner code example
that would show how to have a tcplistner thread running that prints out any
ASCII text sent to it from a client? thanks... i just need something to look
at to see how it works..
 
Hi Brian,

A TcpListener listens for connections. It's the TcpClient that reads the
data. The client usually is in a loop and keeps calling Read. Here's some
code from MSDN that may give you something to work from.

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic


Class MyTcpListener

Public Shared Sub Main()

Try
' Set the TcpListener on port 13000.
Dim port As Int32 = 13000
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")

Dim server As 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
Console.Write("Waiting for a connection... ")

' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
Console.WriteLine("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)
Console.WriteLine([String].Format("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)
Console.WriteLine([String].Format("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)
End Try

Console.WriteLine(ControlChars.Cr + "Hit enter to continue...")
Console.Read()
End Sub 'Main

End Class 'MyTcpListener

I hope this helps.

Craig, VB.NET Team
 
Back
Top