Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Прокси сервер на VB.NET (Proxy Server VB.NET) Добавлено: 24.02.12 23:12  

Автор вопроса:  Ahtoxa
Помогите разобраться с прокси сервером. Запускается, но как только через него пытаюсь пропустить данные ругается на первую строчку функции "readmessage":
Dim bytes As Integer = s.Receive(ByteArray, 1024, 0)

Object reference not set to an instance of an object.

Весь код:
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Threading
Public Class Form1
    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]
   
    Private 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.Resolve(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)
            'Buffer = RecvBytes;
            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 'run
    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 'readmessage
    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 'sendmessage
    'Entry point which delegates to C-style main Private Function


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Const port As Integer = 8889
        Dim tcplistener As New TcpListener(port)
        Console.WriteLine("Listening on port {0}", +port)
        tcplistener.Start()
        While True
            Dim socket As Socket = tcplistener.AcceptSocket()
            Dim thread As Thread
            thread = New Thread(AddressOf run)
            thread.Start()
        End While
    End Sub
End Class

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 27.02.12 07:42
Private read() As [Byte] = New Byte(1024) {}
    Private Buffer As [Byte]() = Nothing

я что то пропустил или это сейчас так модно у быдлокодеров массивы объявлять?

Ответить

Номер ответа: 2
Автор ответа:
 Ahtoxa



Вопросов: 6
Ответов: 29
 Профиль | | #2 Добавлено: 27.02.12 21:16
Код не мой. Нашёл на просторах интернета:
http://www.daniweb.com/software-development/vbnet/threads/347706/1476407#post1476407

Ответить

Номер ответа: 3
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #3 Добавлено: 01.03.12 05:58
Ну так для начала разберись с кодом, а потом вопросы задавай.
Правда, когда разберёшся, вопросы отпадут. :)

Ответить

Номер ответа: 4
Автор ответа:
 kindman



Вопросов: 0
Ответов: 1
 Web-сайт: www.proxybuy.com
 Профиль | | #4
Добавлено: 15.06.12 11:55
Ahtoxa пишет:
Код не мой. Нашёл на просторах интернета:
http://www.daniweb.com/software-development/vbnet/threads/347706/1476407#post1476407

 

Надеюс этот код вам помагло Ahtoxa , потому что у меня была примерно такая ситуация и я решил задачу .

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам