Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
Public Class DateTimeServer
Public Shared Sub Main()
Dim serverSocket As System.Net.Sockets.Socket
Try
Dim hostname As String = Dns.GetHostName()
Dim serverIP As IPAddress = Dns.Resolve(hostname).AddressList(0)
Dim Port As String = "13"
Dim serverhost As New IPEndPoint(serverIP, Int32.Parse(Port))
serverSocket = New Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)
serverSocket.Bind(serverhost)
serverSocket.Listen(50)
Console.WriteLine("DateTime server started at: " + serverhost.Address.ToString() + ":" + Port)
Dim lc As New ListenClient(serverSocket)
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 serverSocket As System.Net.Sockets.Socket
Public Sub New(ByVal serverSocket As System.Net.Sockets.Socket)
Me.serverSocket = serverSocket
End Sub
Public Sub ServerThreadProc()
Dim clientSocket As System.Net.Sockets.Socket
Try
While (True)
clientSocket = serverSocket.Accept()
Dim clientInfo As IPEndPoint = CType( _
clientSocket.RemoteEndPoint, _
IPEndPoint)
Dim serverInfo As IPEndPoint = CType( _
serverSocket.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
|