c-将套接字重新绑定到其他接口

是否存在现有的Linux / POSIX C/C++库或示例代码,用于如何将套接字从一个物理接口重新绑定到另一个物理接口?

例如,我在与物理连接A关联的套接字上进行ping传输,并且我想将该套接字重新绑定到物理连接B,并让ping数据包继续在连接B上发送和接收(在切换过程中短暂延迟后,过度).

我只需要无会话协议.

谢谢

更新:

我正在尝试提供用于PPP和以太网设备的故障转移解决方案.

我有一个基本脚本,可以通过使用iptables,NAT和路由表来完成90%的功能.

问题是发生故障转移时,ping将继续在辅助连接上发送,但是它们的源IP来自旧连接.

我已经和几个从事商用路由器工作的人交谈过,他们的建议是将套接字重新绑定到辅助接口.

更新2:

抱歉,我没有更详细地说明这一点.该解决方案将在路由器上运行.我无法更改ping程序,因为它将在客户端计算机上运行.我仅以ping为例,不是基于会话的任何连接都应该能够切换.我在几台商用路由器上测试了此功能,并且确实可以使用.不幸的是,他们的软件是专有的,但是,通过各种对话和测试,我发现他们在故障转移时重新绑定了套接字.

解决方法:

在您更新的帖子中,问题在于更改路由信息不会更改ping的源地址,只会将其强制出第二个接口. This answer包含一些相关信息.

您需要更改ping程序.您可以使用每个接口的套接字方法,并以某种方式通知程序何时进行故障转移.否则,您必须关闭套接字,然后绑定到第二个接口.

您可以通过两种方式获取所需的接口信息,包括使用SIOCGIFCONF选项调用ioctl()并循环返回的结构以获取接口地址信息.

上一篇:在python tcp服务器和c客户端之间交谈


下一篇:Spring Cloud Open Feign系列【12】Feign请求拦截器RequestInterceptor源码分析及使用案例