【问题标题】:Mirror Data Between Two TCP Streams - VB.NET在两个 TCP 流之间镜像数据 - VB.NET
【发布时间】:2013-07-12 01:01:09
【问题描述】:

几天来,我一直致力于在 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 属性,并连接到服务器。然后,我将从客户端收到的第一个请求发送到服务器。然后,您在上面看到的代码启动并开始转发请求和回复。

有没有更好的方法来做到这一点?为什么页面没有完全加载? 谢谢!

【问题讨论】:

    标签: .net vb.net http networking proxy


    【解决方案1】:

    事实证明,我在上面发布的代码运行良好。我将问题追溯到我程序的其他部分中的一些糟糕的多线程。一旦我解决了这个问题,页面就开始加载了。

    我还是很好奇。有没有更好或更快的方式在两个流之间传递数据?

    【讨论】:

      猜你喜欢
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多