VB.NET Socket5代理客户端链接

2025-11-09 02:33:50

1、现在服务器上使用 LHSocket5 Server建立一个账号

2、之后把下面代码复制到VS中 ,其中的账号密码IP地址都换成第一步中建立的账号信息   之后链接就可以了  

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

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

    End Sub

    ''' <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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢