.net vb socket 官网示例

本文介绍了一种通过Socket连接远程服务器并获取其主页内容的方法。该方法首先建立Socket连接,然后发送HTTP请求来获取指定服务器的首页内容。
Imports System Imports System.Text
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports Microsoft.VisualBasic

Public Class GetSocket

   Private Shared Function ConnectSocket(server As String, port As Integer) As Socket
      Dim s As Socket = Nothing
      Dim hostEntry As IPHostEntry = Nothing     

         ' Get host related information.
        hostEntry = Dns.GetHostEntry(server)

         ' Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
         ' an exception that occurs when the host host IP Address is not compatible with the address family
         ' (typical in the IPv6 case).
      Dim address As IPAddress

        For Each address In  hostEntry.AddressList
            Dim endPoint As New IPEndPoint(address, port)
            Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

            tempSocket.Connect(endPoint)

            If tempSocket.Connected Then
               s = tempSocket
               Exit For
            End If

         Next address

      Return s
   End Function


   ' This method requests the home page content for the specified server.

   Private Shared Function SocketSendReceive(server As String, port As Integer) As String
      'Set up variables and String to write to the server.
      Dim ascii As Encoding = Encoding.ASCII
      Dim request As String = "GET / HTTP/1.1" + ControlChars.Cr + ControlChars.Lf + "Host: " + server + ControlChars.Cr + ControlChars.Lf + "Connection: Close" + ControlChars.Cr + ControlChars.Lf + ControlChars.Cr + ControlChars.Lf
      Dim bytesSent As [Byte]() = ascii.GetBytes(request)
      Dim bytesReceived(255) As [Byte]

      ' Create a socket connection with the specified server and port.
      Dim s As Socket = ConnectSocket(server, port)

      If s Is Nothing Then
         Return "Connection failed"
      End If
      ' Send request to the server.
      s.Send(bytesSent, bytesSent.Length, 0)

      ' Receive the server  home page content.
      Dim bytes As Int32

      ' Read the first 256 bytes.
      Dim page as [String] = "Default HTML page on " + server + ":" + ControlChars.Cr + ControlChars.Lf

      ' The following will block until the page is transmitted.
      Do
         bytes = s.Receive(bytesReceived, bytesReceived.Length, 0)
            page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes)
      Loop While bytes > 0

      Return page
   End Function

   'Entry point which delegates to C-style main Private Function
   Public Overloads Shared Sub Main()
      Main(System.Environment.GetCommandLineArgs())
   End Sub


   Overloads Private Shared Sub Main(args() As String)
      Dim host As String
      Dim port As Integer = 80

      If args.Length = 1 Then
         ' If no server name is passed as argument to this program,
         ' use the current host name as default.
         host = Dns.GetHostName()
      Else
         host = args(1)
      End If

      Dim result As String = SocketSendReceive(host, port)

      Console.WriteLine(result)
   End Sub 'Main
End Class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值