Verbinden met Proxy server

Status
Niet open voor verdere reacties.

Dhaann

Gebruiker
Lid geworden
4 jun 2008
Berichten
27
Ik probeer met de volgende code met een proxy te verbinden (van internet geplukt):

Code:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Threading

Namespace IP_Ghost

    Class IP_Ghost
        Private clientSocket As Socket
        Private read() As [Byte] = New Byte(1024) {}
        Private Buffer As [Byte]() = Nothing
        Private ASCII As Encoding = Encoding.ASCII
        Private HTTP_VERSION As String = "HTTP/1.0"
        Private CRLF As String = ControlChars.Cr + ControlChars.Lf
        Private RecvBytes(4096) As [Byte]

        Public Sub New(ByVal socket As Socket)
            Me.clientSocket = socket
        End Sub

        Public Sub run()
            Dim clientmessage As [String] = " "
            Dim sURL As [String] = " "
            Dim bytes As Integer = readmessage(read, clientSocket, clientmessage)
            If bytes = 0 Then
                Return
            End If
            Dim index1 As Integer = clientmessage.IndexOf(" "c)
            Dim index2 As Integer = clientmessage.IndexOf(" "c, index1 + 1)
            If index1 = -1 Or index2 = -1 Then
                Throw New IOException
            End If
            Console.WriteLine("Connecting to Site: {0}", clientmessage.Substring(index1 + 1, index2 - index1))
            Console.WriteLine("Connection from {0}", clientSocket.RemoteEndPoint)
            Dim part1 As String = clientmessage.Substring(index1 + 1, index2 - index1)
            Dim index3 As Integer = part1.IndexOf("/"c, index1 + 8)
            Dim index4 As Integer = part1.IndexOf(" "c, index1 + 8)
            Dim index5 As Integer = index4 - index3
            sURL = part1.Substring(index1 + 4, part1.Length - index5 - 8)
            Try
                Dim IPHost As IPHostEntry = Dns.GetHostEntry(sURL)
                Console.WriteLine("Request resolved: ", IPHost.HostName)
                Dim aliases As String() = IPHost.Aliases
                Dim address As IPAddress() = IPHost.AddressList
                Console.WriteLine(address(0))
                Dim sEndpoint As New IPEndPoint(address(0), 80)
                Dim IPsocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
                IPsocket.Connect(sEndpoint)
                If IPsocket.Connected Then
                    Console.WriteLine("Socket connect OK")
                End If
                Dim [GET] As String = clientmessage
                Dim ByteGet As [Byte]() = ASCII.GetBytes([GET])
                IPsocket.Send(ByteGet, ByteGet.Length, 0)
                Dim rBytes As Int32 = IPsocket.Receive(RecvBytes, RecvBytes.Length, 0)
                Console.WriteLine("Recieved {0}", +rBytes)
                Dim strRetPage As [String] = Nothing
                strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, rBytes)
                While rBytes > 0
                    rBytes = IPsocket.Receive(RecvBytes, RecvBytes.Length, 0)
                    strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, rBytes)
                End While
                IPsocket.Shutdown(SocketShutdown.Both)
                IPsocket.Close()
                sendmessage(clientSocket, strRetPage)
            Catch exc2 As Exception
                Console.WriteLine(exc2.ToString())
            End Try
        End Sub

        Private Function readmessage(ByVal ByteArray() As Byte, ByRef s As Socket, ByRef clientmessage As [String]) As Integer
            Dim bytes As Integer = s.Receive(ByteArray, 1024, 0)
            Dim messagefromclient As String = Encoding.ASCII.GetString(ByteArray)
            clientmessage = CType(messagefromclient, [String])
            Return bytes
        End Function

        Private Sub sendmessage(ByVal s As Socket, ByVal message As String)
            Buffer = New [Byte](message.Length + 1) {}
            Dim length As Integer = ASCII.GetBytes(message, 0, message.Length, Buffer, 0)
            s.Send(Buffer, length, 0)
        End Sub

       Public Overloads Shared Sub Main()
            Main(System.Environment.GetCommandLineArgs())
        End Sub

        Overloads Shared Sub Main(ByVal args() As String)
            Const port As Integer = 8889
            Dim TcpListener As New TcpListener("IP", port)
            Console.WriteLine("Listening on port {0}", +port)
            TcpListener.Start()
            While True
                Dim socket As Socket = TcpListener.AcceptSocket()
                Dim webproxy As New WebProxy2(socket)
                Dim thread As New Thread(New ThreadStart(AddressOf webproxy.run))
                thread.Start()
            End While
        End Sub

    End Class

End Namespace

Bij de regel Dim TcpListener As New TcpListener("IP", port)
moet ik i.v.p "IP" een zgn "System.Net.IPEndPoint" invoeren, maar wat is dat precies?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan