VB.Net Tutorial/Socket Network/TcpListener — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 15:55, 26 мая 2010
Date time server based on TcpListener
<source lang="vbnet">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</source>
DateTime Server started at: 192.168.1.101:13 ^CTerminate batch job (Y/N)? n
Use TcpListener
<source lang="vbnet">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</source>