VB.NET Socket5代理客户端链接 LHSocket5 Server源码

来源:互联网 发布:苹果系统检测软件 编辑:程序博客网 时间:2024/06/14 14:14


使用

        ' 下面以来接代理访问土豆网为例可直接使用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


注意:必须是链接到  蓝恒Socket5 Server  搭建的服务器才可以

官方帮助信息:http://www.lanheng.net/ProductContent/39/85

1 0
原创粉丝点击