Mega Code Archive

 
Categories / VB.Net Tutorial / Socket Network
 

Date time server based on TcpListener

Imports System.Net Imports System.Net.Sockets Imports System.Threading Imports System.Text Public Class DateTimeServer   Public Shared Sub Main()     Try       Dim hostname As String = Dns.GetHostName()       Dim serverIP As IPAddress = Dns.Resolve(hostname).AddressList(0)       Dim Port As String = "13"       Dim tcpListener As New TcpListener(serverIP, Int32.Parse(Port))       tcpListener.Start()       Console.WriteLine("DateTime Server started at: " + serverIP.ToString() + ":" + Port)       Dim lc As New ListenClient(tcpListener)       Dim serverthread As New Thread( _           New ThreadStart(AddressOf lc.ServerThreadProc))       serverthread.Start()     Catch ex As Exception       Console.WriteLine(ex.StackTrace.ToString())     End Try   End Sub End Class Public Class ListenClient   Private tcpListener As System.Net.Sockets.TcpListener   Private clientSocket As System.Net.Sockets.Socket   Public Sub New(ByVal tcpListener As tcpListener)     Me.tcpListener = tcpListener   End Sub   Public Sub ServerThreadProc()     Try       While (True)         clientSocket = tcpListener.AcceptSocket()         Dim clientInfo As IPEndPoint = CType(clientSocket.RemoteEndPoint,IPEndPoint)         Dim serverInfo As IPEndPoint = CType(tcpListener.LocalEndpoint,IPEndPoint)         Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" + clientInfo.Port.ToString())         Console.WriteLine("Server: " + serverInfo.Address.ToString() + ":" + serverInfo.Port.ToString())         Dim strDate As String = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString()         Dim byteDateLine() As Byte = Encoding.ASCII.GetBytes(strDate.ToCharArray())         clientSocket.Send(byteDateLine, byteDateLine.Length, SocketFlags.None)         Console.WriteLine("To Client: " + clientInfo.Address.ToString() + ":" + clientInfo.Port.ToString() + ": " + strDate)         clientSocket.Shutdown(SocketShutdown.Both)         clientSocket.Close()       End While     Catch ex As Exception       Console.WriteLine(ex.StackTrace.ToString())       If clientSocket.Connected Then         clientSocket.Close()       End If     End Try   End Sub End Class DateTime Server started at: 192.168.1.101:13 ^CTerminate batch job (Y/N)? n