【发布时间】:2012-10-04 09:32:36
【问题描述】:
我编写了一个模拟 c# http 服务器,但遇到了问题。当客户端第一次关闭连接(响应的所有数据都已收到)时,我的程序会抛出异常:
InvalidOperationException:在所有字节都完成之前无法关闭流 写的。
我该怎么办?这是否意味着服务器套接字也已关闭?
【问题讨论】:
-
也许阅读other question会给你一些想法。
标签: c# httplistener
我编写了一个模拟 c# http 服务器,但遇到了问题。当客户端第一次关闭连接(响应的所有数据都已收到)时,我的程序会抛出异常:
InvalidOperationException:在所有字节都完成之前无法关闭流 写的。
我该怎么办?这是否意味着服务器套接字也已关闭?
【问题讨论】:
标签: c# httplistener
服务器是否读取了整个请求?
一般来说,关闭你的一侧的连接是一个好习惯,然后读取直到你得到零字节(这意味着另一端关闭了连接),然后释放套接字。
private void SafeShutdown( Socket s )
{
socket.Shutdown( Send );
var buff = new byte[200];
while( socket.Receive( buff ) > 0 )
;
socket.Shutdown( Receive );
socket.Close();
}
【讨论】: