我有一个通过 tcpListener 进行通信的服务。 问题是当用户重新启动服务时 - 抛出“地址已在使用”异常,并且服务在几分钟左右无法启动。
有什么方法可以告诉系统终止旧连接以便我可以打开一个新连接? (我不能只使用随机端口,因为服务无法通知客户端端口是什么,所以我们必须依赖预定义的端口)
最佳答案
在绑定(bind)到监听端口之前设置SO_REUSEADDR
套接字选项。看起来相应的 .NET 代码是这样的:
SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
关于c# - 如何强行关闭 TcpListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992568/