在服务器端,我正在尝试优雅地关闭连接的套接字。我知道套接字上的正确事件序列应该是:
1. 使用SocketShutdown.Send选项关闭套接字 2. 循环/等待直到socket Receive返回0个字节 3. 关闭套接字
我有一些问题:
1. 如果Socket.Receive永远不返回(零字节)怎么办?我们会一直尝试关闭套接字吗? 2. 每当我在服务器上调用Close时,客户端总是收到“现有连接被远程主机强制关闭”的异常。如何更“优雅”地通知客户端关闭连接? 3. 在服务器上,如果我使用异步Begin/EndReceive调用,每当我调用套接字上的Close时,它总是在Begin/EndReceive线程上导致ObjectDisposedException异常。是否有没有这种异常发生的关闭套接字方式?
1. 使用SocketShutdown.Send选项关闭套接字 2. 循环/等待直到socket Receive返回0个字节 3. 关闭套接字
我有一些问题:
1. 如果Socket.Receive永远不返回(零字节)怎么办?我们会一直尝试关闭套接字吗? 2. 每当我在服务器上调用Close时,客户端总是收到“现有连接被远程主机强制关闭”的异常。如何更“优雅”地通知客户端关闭连接? 3. 在服务器上,如果我使用异步Begin/EndReceive调用,每当我调用套接字上的Close时,它总是在Begin/EndReceive线程上导致ObjectDisposedException异常。是否有没有这种异常发生的关闭套接字方式?