使用
' 下面以来接代理访问土豆网为例可直接使用IP地址或域名方式进行代理
Dim VSocket As Net.Sockets.Socket = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
'Dim Result As Integer = SetConnection(VSocket, "192.168.1.6", 60000, "U602414", "P257638", 1, "123.126.98.146", 80)
Dim Result As Integer = SetConnection(VSocket, "192.168.1.6", 60000, "U602414", "P257638", 2, "www.tudou.com", 80)
If Result <> 0 Then
TextBox1.AppendText("LhS5服务器连接信息设置失败! 请查看错误代码的对应信息! 错误代码:" + Result.ToString)
' -1 本地连接到代理服务器或发送数据到代理服务器失败 请检查本机连接是否正常
' 0=成功
' 1=身份失败
' 2=服务器连接用户要代理的目标地址失败
' 3=服务器解析用户发送的域名地址失败
' 255=失败
Return
End If
'发送头部
Dim Content As Text.StringBuilder = New System.Text.StringBuilder
Content.Append("GET / HTTP/1.0" + vbCr + vbLf)
Content.Append("User-Agent: Mozilla/5.0 Chrome/48.0.2564.109 Safari/537.36" + vbCr + vbLf)
Content.Append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" + vbCr + vbLf)
Content.Append("Host: www.tudou.com" + vbCr + vbLf + vbCr + vbLf)
VSocket.Send(System.Text.Encoding.Default.GetBytes(Content.ToString))
System.Threading.Thread.Sleep(1000)
' 返回访问网址的信息 如果读取内容不全 、可使用返回的 Content-Length中的数量进行读取
Dim Vbyte(20000) As Byte
Dim VIndex As Integer = VSocket.Receive(Vbyte)
TextBox1.AppendText(System.Text.Encoding.UTF8.GetString(Vbyte) + vbCrLf)
VSocket.Close()
操作方法
''' <summary>
'''
''' </summary>
''' <param name="Client"></param>
''' <param name="LhS5Ip">LH代理服务器程序下开通的用户账号的IP地址</param>
''' <param name="LhS5Port">LH代理服务器程序下开通的用户账号的端口</param>
''' <param name="LhS5UserName">LH代理服务器程序下开通的用户账号的账号</param>
''' <param name="LhS5UserPassword">LH代理服务器程序下开通的用户账号的密码</param>
''' <param name="ConnType">设置要代理的访问的目标类型 1=IP4 2=域名 此访问类型是告诉lh服务器要代理连接到的目标地址</param>
''' <param name="TragetAddress">根据上方输入内容 IP4地址 或 域名</param>
''' <param name="TragetProt">上方配套的连接地址对应的端口</param>
''' <returns></returns>
Private Function SetConnection(ByRef Client As Socket, ByVal LhS5Ip As String, ByVal LhS5Port As UShort, ByVal LhS5UserName As String, ByVal LhS5UserPassword As String, ByVal ConnType As Integer, ByVal TragetAddress As String, ByVal TragetProt As UShort) As Integer
' 蓝恒网络Socket5客户端连接演示
' Http://www.lanheng.net
' 下面代码开发者可根据自行情况摘取整合进自己的程序内进行相关修改 也可以直接使用
Dim Result As Integer = 0
Try
Client.Connect(Net.IPAddress.Parse(LhS5Ip), LhS5Port)
Catch ex As Exception
Console.WriteLine("错误信息:" + ex.Message)
Return -1
End Try
Dim Vindex As Integer = 0
Dim Size As Integer = 6 + System.Text.Encoding.ASCII.GetBytes(LhS5UserName + LhS5UserPassword).Count
If ConnType = 2 Then
Size += 1 + System.Text.Encoding.ASCII.GetBytes(TragetAddress).Count
Else
Size += 4
End If
Dim Vbyte(Size - 1) As Byte
Vbyte(0) = 85
Vbyte(1) = System.Text.Encoding.ASCII.GetBytes(LhS5UserName).Count
Vindex = 2
For Each i As Byte In System.Text.Encoding.ASCII.GetBytes(LhS5UserName)
Vbyte(Vindex) = i
Vindex += 1
Next
Vbyte(Vindex) = System.Text.Encoding.ASCII.GetBytes(LhS5UserPassword).Count
Vindex += 1
For Each i As Byte In System.Text.Encoding.ASCII.GetBytes(LhS5UserPassword)
Vbyte(Vindex) = i
Vindex += 1
Next
Select Case ConnType
Case 1
Vbyte(Vindex) = 1
Vindex += 1
For Each i As Byte In Net.IPAddress.Parse(TragetAddress).GetAddressBytes
Vbyte(Vindex) = i
Vindex += 1
Next
Case 2
Vbyte(Vindex) = 2
Vindex += 1
Vbyte(Vindex) = System.Text.Encoding.ASCII.GetBytes(TragetAddress).Count
Vindex += 1
For Each i As Byte In System.Text.Encoding.ASCII.GetBytes(TragetAddress)
Vbyte(Vindex) = i
Vindex += 1
Next
End Select
For Each i As Byte In BitConverter.GetBytes(BitConverter.ToUInt16(BitConverter.GetBytes(Net.IPAddress.HostToNetworkOrder(TragetProt)), 2))
Vbyte(Vindex) = i
Vindex += 1
Next
Client.Send(Vbyte)
ReDim Vbyte(1)
Vindex = Client.Receive(Vbyte)
If Vindex < 2 Then
Console.WriteLine("获取服务器返回数据失败")
Client.Close()
Return -1
Else
Return Vbyte(1)
End If
End Function
官方帮助信息:http://www.lanheng.net/ProductContent/39/85