如何在C#中中止套接字

6 .net c# sockets

我试图中止套接字连接,以便另一端的客户端将获得"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_LINGERTIME_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数据包并认为计算机重置或其他什么。