尝试编写一个基本代理我已经按照以下几行实现了代码作为开始。
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();
}
}
}
然后我像这样设置我的局域网代理
我当前的目标(希望您可以从我的代码中推断出)是只返回一个没有标题或任何内容的文本值。
我遇到的问题是,我按原样运行代码的任何尝试都会导致间歇性行为,Chrome 和 IE9 通常只会返回ERR_CONNECTION_ABORTED或Internet Explorer 无法分别显示网页,并且偶尔会显示预期的输出“测试”。
我最初尝试使用异步方法(使用 BeginAcceptTcpClient()),但又回到了这种更简单的技术,因为我认为这个问题可能源于我在异步实现中做错了什么,但似乎原因是别的。
有人可以提供任何指导吗?