我试图中止套接字连接,以便另一端的客户端将获得"WSAECONNABORTED(10053)软件导致连接中止".轮询连接时出现错误消息.
Close()和Shutdown()将正常断开连接.我不想要一个优雅的断开连接.我想做一次Abort,以便客户感觉到出了什么问题.
谢谢,
编辑:我正在编写服务器编码,我想中止套接字连接客户端
小智 5
此处详细描述了底层细节,包括何时实际上适合强制中止连接(/sf/answers/916220511/)。
C# 执行此操作的方法是:
socket.LingerState = new LingerOption(true, 0);
socket.Close();
Run Code Online (Sandbox Code Playgroud)
也就是说,SO_LINGER
与TIME_WAIT = 0
小智 2
我已经成功模拟了这种情况:
要执行正常的正常断开连接:
你做:
socket.Shutdown(SocketShutdown.Both);
socket.Close();
Run Code Online (Sandbox Code Playgroud)
但是,要执行中止操作,您需要执行以下操作:
socket.Shutdown(SocketShutdown.Send);
socket.Close();
Run Code Online (Sandbox Code Playgroud)
我认为不同之处在于客户端不会收到任何ACK数据包并认为计算机重置或其他什么。