基本的なプロキシを作成しようとして、最初に次の行に沿ってコードを実装しました。
private Thread _proxyThread;
public void Start()
{
this._proxyThread = new Thread(StartListener);
this._proxyThread.Start();
}
protected void StartListener(object data)
{
this._listener = new TcpListener(IPAddress.Any, 1234);
this._listener.Start();
while (true)
{
TcpClient client = this._listener.AcceptTcpClient();
while (client.Connected)
{
NetworkStream stream = client.GetStream();
StringBuilder request = new StringBuilder();
byte[] bytes = new byte[1024];
while (stream.DataAvailable && stream.CanRead)
{
int i = stream.Read(bytes, 0, bytes.Length);
request.Append(System.Text.Encoding.ASCII.GetString(bytes, 0, i));
}
if (stream.CanWrite)
{
byte[] response = System.Text.Encoding.Default.GetBytes("HTTP/1.1 200 OK" + Environment.NewLine + "Content-length: 4\r\n\r\n" + "Test");
stream.Write(response, 0, response.Length);
}
client.Close();
}
}
}
次に、LANプロキシを次のように設定します
私の現在の目標 (私のコードから推測できることを願っています) は、ヘッダーなどのないテキスト値のみを返すことです。
私が直面している問題は、コードをそのまま実行しようとすると、Chrome と IE9 が通常ERR_CONNECTION_ABORTEDを返すか、Internet Explorer がそれぞれ Web ページを表示できず、非常にまれに期待される出力を表示するという断続的な動作になることです。テスト"。
私はもともと非同期アプローチ (BeginAcceptTcpClient() を使用) を使用しようとしましたが、この問題は非同期実装で何かを間違って実行したことが原因である可能性があると考えたため、この単純な手法に戻りましたが、原因は別のようです。
誰でもガイダンスを提供してもらえますか?