2012-04-13 1 views
1

Ich baue einen einfachen Proxy in Server vb.NET und bisher war es erfolgreich, aber dann, wenn ich Daten aus dem Internet und schreibe es zurück in den Netzwerk-Stream meines Browsers mit NetworkStream.Write die empfangenen Daten neigen dazu, langsam zu kommen mein Browser aus Gründen, die ich nicht kenne. Aber wenn ich meine Anwendung an einen anderen Proxy/Listener auf meinem lokalen Computer ketten (z. B. Privoxy), scheinen Daten sehr schnell zu meinem Browser zu kommen. Wenn jemand eine Antwort darauf hat, würde ich es wirklich gerne wissen. DankeWarum ist meine NetworkStream.Write() langsam beim Zurückschreiben empfangener Daten an den Browser?

BTW ist hier der Teil meines Code {Subroutine}, der Daten empfängt und an meinen Browser weiterleitet.

Public Sub ForwardRequest(ByVal Client As TcpClient, ByVal ClientMessage As String) 

     Dim Browser As TcpClient = Client 
     Dim BrowserStream As NetworkStream = Browser.GetStream 
     Dim Server As TcpClient = New TcpClient(IPAddress.Parse("testwebsite.com").ToString, 80) 
     Dim ServerStream As NetworkStream = Server.GetStream 

     ServerStream.Write(Encoding.ASCII.GetBytes(ClientMessage), 0, Encoding.ASCII.GetBytes(ClientMessage).Length) 

     Dim Buffer(1024) As Byte 
     Dim ReceivedInt As Integer 

     Do 
      ReceivedInt = ServerStream.Read(Buffer, 0, Buffer.Length) 
      BrowserStream.Write(Buffer, 0, ReceivedInt) 
     Loop While (ReceivedInt > 0) 

     BrowserStream.Flush() 'I read somewhere that this does nothing though 
     BrowserStream.Close() 
     Browser.Close() 
     ServerStream.Close() 
     Server.Close() 

    End Sub 
+0

Ich markiert Ihren Code als Code-Block, so dass es besser formatiert. Ich habe auch 'Lenght' auf' Length' korrigiert, was bedeutet, dass * nicht * dein Code ist, sondern Code, der nicht die gleichen Probleme wie dein echter Code aufweist. –

+0

Sie haben auch keine Art von Schleifen gezeigt, um Antworten mit einer Länge von> 1024 Byte zu verarbeiten, von denen ich annehme, dass Ihr realer Code dies tut. Überschneidest du deine Lese- und Schreibvorgänge oder macht dein Code das eine oder das andere zu irgendeinem Zeitpunkt? Es ist schwierig zu diagnostizieren, wenn wir nicht den echten Code sehen (und/oder nicht genug davon, um zu sehen, was Sie tatsächlich tun) –

+0

Ich habe den ganzen Code eingegeben, gibt es irgendwas, was ich vermisse und warum mein schreiben ist langsam? – user1187372

Antwort

0

Ok ich es geschafft, das „Geheimnis“ selbst zu lösen, ging ich weiter Asynchronous Sockets Steckdose zu benutzen und alles begann das Arbeiten groß. Danke.