VB.Net by API/System.Net.Sockets/Socket

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

New Socket

   

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


Socket.Bind

   

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


Socket.Connect

   

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


Socket.Listen

   

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


Socket.Receive

   

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