c# - 如何强行关闭 TcpListener

标签 c# sockets tcp terminate tcplistener

我有一个通过 tcpListener 进行通信的服务。 问题是当用户重新启动服务时 - 抛出“地址已在使用”异常,并且服务在几分钟左右无法启动。

有什么方法可以告诉系统终止旧连接以便我可以打开一个新连接? (我不能只使用随机端口,因为服务无法通知客户端端口是什么,所以我们必须依赖预定义的端口)

最佳答案

在绑定(bind)到监听端口之前设置SO_REUSEADDR 套接字选项。看起来相应的 .NET 代码是这样的:

SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

关于c# - 如何强行关闭 TcpListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992568/

相关文章:

c# - 将后台 worker 更新为异步等待

c# - 发布应用时显示停机页面

c# - 根据字符串中定义的数据类型在运行时生成结构

node.js - 无法向 TCP 客户端发送响应

c# - LINQ 查询通过多项检查按对象属性过滤列表

java - Java套接字将byte []传输到.wav

c - 接收所有套接字(直到消息结束符号),C

java - Android套接字客户端未从服务器接收

java - Web 服务与 TCP/IP 套接字 (Java) + SQL 连接

networking - GoLang 监听端口范围