VB.Net Tutorial/Socket Network/Socket — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 15:55, 26 мая 2010

Create Socket and make a connection

<source lang="vbnet">Imports System.Net.Sockets Imports System.Net Imports System.Threading

Public Class Tester

   Dim Shared mySocket As Socket
   Public Shared Sub Main
       Dim myThread As New Thread(New ThreadStart(AddressOf StartConnection))
       myThread.Start()
   End Sub
   Private Shared Sub StartConnection()
       Try
           mySocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
           mySocket.Connect(New IPEndPoint(IPAddress.Parse("192.168.1.100"), 12335))
       Catch ex As SocketException
           Console.WriteLine(ex.Message)
       End Try
   End Sub
   

End Class</source>

Date time client based on Socket

<source lang="vbnet">Imports System Imports System.IO Imports System.Net Imports System.Net.Sockets Imports System.Text Public Class DateTimeClient

 Public Shared Sub Main()
   Dim args As String() = Environment.GetCommandLineArgs()
   Dim serverHost As String = "127.0.0.1"
   Dim hostadd As IPAddress = Dns.Resolve(serverHost).AddressList(0)
   Dim EPhost As New IPEndPoint(hostadd, 13)
   Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
   Try
     clientSocket.Connect(EPhost)
   Catch ex As Exception
     Console.WriteLine(ex.ToString())
   End Try
   Try
     Dim recvbytes(1024) As Byte
     Dim i As Integer = clientSocket.Receive(recvbytes, 0, clientSocket.Available, SocketFlags.None)
     Dim datetime As String = Encoding.ASCII.GetString(recvbytes, 0, i)
     Console.WriteLine("Receive {0} bytes.", i)
     Console.WriteLine("Current server date/Time: {0}", datetime)
     clientSocket.Shutdown(SocketShutdown.Both)
     clientSocket.Close()
   Catch ec As Exception
     Console.WriteLine(ec.StackTrace.ToString())
     Exit Sub
   End Try
 End Sub

End Class</source>

Socket client

<source lang="vbnet">Imports System.Threading Imports System.Net Imports System.Net.Sockets

Public Class ServerSocket

 Public Shared Sub Main()
   Try
     Dim serverSocket As New Socket( _
       AddressFamily.InterNetwork, _
       SocketType.Stream, _
       ProtocolType.Tcp)
     Dim serverIP As IPAddress = IPAddress.Parse("127.0.0.1")
     Dim Port As String = "80"
     Dim serverhost As New IPEndPoint(serverIP, Int32.Parse(Port))
     serverSocket.Bind(serverhost)
     serverSocket.Listen(50)
     Dim lc As New ListenClient(serverSocket)
     Dim serverthread As Threading.Thread
     serverthread = New Thread(New Threading.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
 Private clientSocket As System.Net.Sockets.Socket
 Public Sub New(ByVal serverSocket As System.Net.Sockets.Socket)
   Me.serverSocket = serverSocket
 End Sub
 Public Sub ServerThreadProc()
   Do While True
     Try
       Dim clientSocket As Socket = 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())
     Catch ex As Exception
       Console.WriteLine(ex.StackTrace.ToString())
     End Try
   Loop
 End Sub

End Class</source>