C# 解决TCP Server 关不掉客户端连接的问题

问题描述

拷贝了一段 TCP Server的应用代码,第一次运行正常,但是关闭软件或者实现disconnect+close后都无法关闭端口连接。

关闭之后,另外一个客户端还在正常与PC连接。

TCP Server 重新运行,无法接收到客户端的连接。

复现环境

1、 C#  .net界面程序

2、 .net 4.8.1

3、 System.Net.Sockets

4、 TcpListener 接口

解决办法

TcpServer 再关闭指定客户端的连接时,或者关闭服务器时,要先断开连接。

断开连接的方法分3步:

Shutdown(SocketShutdown.Both);//第一步

Disconnect(false);//第二步

Close();//第三步

结束。

百度了很多,,,没有人列出这3步,要么是只有1步,要么是只有两步。

不知道是坑人,还是环境不一致导致的,焯!

说明:

1、关闭指定客户端

如果客户端一直循环监听和连接,你关掉了还是会立即连上。

2、软件关闭时或者手动关闭服务器 

软件关闭时一定要关闭服务器,可以在 FormClosed 事件中添加处理。

而如果是手动关闭服务器,则要先断开与客户端的连接,然后再关闭服务器。

你可能感兴趣的:(C#,tcp/ip,网络,服务器)