我一直在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属性,并连接到服务器。然后,我将从客户端获得的第一个请求发送到服务器。然后,您在上面看到的代码启动并开始中继请求和回复。
有更好的方法吗?为什么页面没有完全加载? 谢谢!
答案 0 :(得分:0)
事实证明,我上面发布的代码运行得非常好。我将问题追溯到程序其他部分的一些糟糕的多线程。一旦我修复了,页面就开始加载了。
我仍然很好奇。是否有更好或更快的方式在两个流之间传递数据?