ここ数日、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 属性を取り出して、サーバーに接続しています。次に、クライアントから取得した最初のリクエストをサーバーに送信しました。次に、上記のコードが起動し、リクエストと応答の中継を開始します。
これを行うより良い方法はありますか?そして、ページが完全にロードされないのはなぜですか? 感謝!