在写入所有字节之前,C#无法关闭流

时间:2012-10-04 09:32:36

标签: c# httplistener

我写了一个模拟c#http服务器,我有一个问题。当客户端首先关闭连接时(已收到响应的所有数据),我的程序抛出异常:

  

InvalidOperationException:在所有字节都为止之前无法关闭流   写入。

我该怎么办?这是否意味着服务器套接字也关闭了?

1 个答案:

答案 0 :(得分:1)

服务器是否读取了整个请求?

通常一个好习惯是关闭你的连接端,然后读取直到你得到零字节(这意味着另一边关闭连接),然后释放套接字。

private void SafeShutdown( Socket s )
{
    socket.Shutdown( Send );
    var buff = new byte[200];
    while( socket.Receive( buff ) > 0 )
        ;
    socket.Shutdown( Receive );
    socket.Close();
}