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


使用

        ' 下面以来接代理访问土豆网为例可直接使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值