问题描述
拷贝了一段 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 事件中添加处理。文章来源:https://www.toymoban.com/news/detail-616402.html
而如果是手动关闭服务器,则要先断开与客户端的连接,然后再关闭服务器。文章来源地址https://www.toymoban.com/news/detail-616402.html
到了这里,关于C# 解决TCP Server 关不掉客户端连接的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!