我正在编写一个简单的代理服务器,就像我的浏览器(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);
}
}
什么是问题? 非常感谢
答案 0 :(得分:0)
这可能是竞争条件,因为您正在使用异步套接字。 请看这里: http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx