Date time server based on System.Net.Sockets.Socket : Socket Server « Socket Network « VB.Net Tutorial





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










22.10.Socket Server
22.10.1.Socket server
22.10.2.Date time server based on System.Net.Sockets.Socket
22.10.3.Socket Server with user interfaceSocket Server with user interface
22.10.4.Using Async Socket ServerUsing Async Socket Server