0

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

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

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

4

1 回答 1

0

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

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

private void SafeShutdown( Socket s )
{
    socket.Shutdown( Send );
    var buff = new byte[200];
    while( socket.Receive( buff ) > 0 )
        ;
    socket.Shutdown( Receive );
    socket.Close();
}
于 2012-10-04T09:42:28.033 回答