c# - 当以太网连接/断开连接时,C# 服务器套接字绑定/重新绑定端点
问题描述
背景:
我有一socket
台服务器绑定到机器 NIC 上的特定 IP 地址。如果NIC 连接到客户端计算机,这可以正常工作。不过,我遇到的问题是一个错误场景,如果 NIC 未连接到客户端计算机,则会引发以下错误:“ the requested address is not valid in its context
”。这是有道理的,因为由于没有连接,所以无法分配 IP 地址。
问题:
如何重新绑定 NIC,socket
以便在 NIC 物理连接到客户端计算机后,socket
开始侦听?请注意,当我重新启动程序时,它会正确绑定并且一切都很好。不过,我希望能够重新启动socket
/ 重新绑定而不必重新启动程序。
服务器套接字连接:如果确定套接字未绑定(在后台服务中完成),我已经有代码每 X 秒调用一次连接。当我调用重新连接方法(如下所示)时,我仍然收到错误消息。
var listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listeningSocket.SetSocketOptions(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
// exception thrown here if NIC is not physically connected
//
listeningSocket.Bind(new IPEndPoint(address, port));
解决方案
推荐阅读
- pyspark - 从嵌套的 json 文件中提取数据
- java - 每次在 Hibernate 中动态创建 EntityManager / 连接到自定义主机/数据库
- swift - 如何在swift 5中添加带有一个标签的表格视图页脚
- java - 创建 sql 查询时使用 java.text.MessageFormat.format() 是否安全?
- sql - 如何将一列拆分为多列
- mql4 - 关闭订单时票证无效
- stm32 - What initialises the contents of the STM32's USB BTABLE when the __HAL_RCC_USB_CLK_ENABLE() macro is executed in HAL_PCD_MspInit()?
- java - 未报告的异常 ParseException; 必须被捕获或声明被抛出 -- JAVA 错误
- java - 是否可以在 logback 中为特定的 appender/logger 禁用 MDC 日志记录字段?
- visual-studio - Visual Studio:(如何)我可以签入变更集中的特定行,而不是简单地签入整个文件?