0

我目前正在编写一个简单的代理服务器,就像我的浏览器(Firefox 或 chrome)和 Web 服务器之间的接口,我将 Firefox 设置为向特定端口(7777)发送请求,我监听这个端口以获取请求并发送到互联网得到回应。

对于使用异步套接字向 Web 服务器发送和接收我的请求,我在向 Firefox 发送响应时遇到问题,因为 Web 服务器以多部分(8Kb)获得一个请求的响应,我立即将响应的每一部分发送到浏览器。现在,当我发送包含标头信息的请求的第一部分时,我没有问题,但是当我想发送 GZip 请求的其余部分时,我的浏览器会引发此异常

FireFox:内容编码错误 您尝试查看的页面无法显示,因为它使用了无效或不受支持的压缩形式。

Chrome:错误 330(net::ERR_CONTENT_DECODING_FAILED):未知错误。

但是当我将 sleep(1000) 放入 sendcallback 时,它可以正常工作

private void SendCallback(IAsyncResult ar)
{
    try
    {
        SendStateObject Result = (SendStateObject)ar.AsyncState;

        int ByteSend = Result.WorkSocket.EndSend(ar);
        System.Threading.Thread.Sleep(1000);
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.StackTrace);
    }
}

什么是问题?非常感谢

4

1 回答 1

0

这可能是一种竞争条件,因为您使用的是异步套接字。请看这里:http: //msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

于 2013-03-31T19:48:22.933 回答