VB.Net Tutorial/Socket Network/TcpListener
Версия от 16:40, 26 мая 2010; (обсуждение)
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
Use TcpListener
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading
Imports System.Text
Public Class Tester
Dim Shared myTcpListener As TcpListener
Public Shared Sub Main
Dim myThread As New Thread(New ThreadStart(AddressOf StartListen))
myThread.Start()
End Sub
Private Shared Sub StartListen()
myTcpListener = New TcpListener(12334)
Dim blnConection As Boolean = False
Try
myTcpListener.Start()
Dim mySocket As Socket = myTcpListener.AcceptSocket()
Do
If mySocket.Connected = True Then blnConection = True
Loop Until blnConection = True
myTcpListener.Stop()
Catch ex As SocketException
Console.WriteLine(ex.Message)
End Try
End Sub
End Class