使用Socket发送对Browser的响应时出错

时间:2013-03-31 16:31:56

标签: c# .net sockets

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

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

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

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

但是当我把send(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);
    }
}

什么是问题? 非常感谢

1 个答案:

答案 0 :(得分:0)

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