Я работаю над созданием прозрачного прокси-приложения в vb.net в течение нескольких дней. Все продолжалось до сих пор. У меня возникли проблемы с поиском наилучшего способа отразить данные от клиента на сервере и наоборот.Зеркальные данные между двумя потоками TCP - VB.NET
Я пробовал несколько разных методов. Вот мой последний. Он работает лучше всего, но страница никогда не заканчивает загрузку.
Do Until NeedToClose = True
If client.Connected = True Then
If client.GetStream.DataAvailable = True Then
Dim buffer(client.ReceiveBufferSize) As Byte
Dim length As Integer
Try
length = client.GetStream.Read(buffer, 0, buffer.Length) 'fills buffer with request
server.GetStream.Write(buffer, 0, length)
Catch ex As Exception
End Try
End If
If server.Connected = False Then
'client is holding connection open. server has already disconnected
stopWorker()
End If
If server.Connected = True Then
If server.GetStream.DataAvailable = True Then
Dim buffer(server.ReceiveBufferSize) As Byte
Dim length As Integer
Try
length = server.GetStream.Read(buffer, 0, buffer.Length) 'fills buffer with request
client.GetStream.Write(buffer, 0, length)
Catch ex As Exception
End Try
End If
If client.Connected = False Then
'server is holding connection open. client has already disconnected
stopWorker()
End If
End If
End If
If client.Connected = False And server.Connected = False Then
stopWorker()
End If
Loop
Возможно, это не лучший способ для этого. Try..Catch - это просто точка останова, на которой можно сидеть. Я уже получил соединение с клиентом, вытащил атрибут Host и подключился к серверу. Затем я отправил первый запрос, который я получил от клиента на сервер. Затем код, который вы видите выше, запускается и запускает ретрансляцию запросов и ответов.
Есть ли лучший способ сделать это? И почему страница никогда не загружается полностью? Спасибо!