是否存在现有的Linux / POSIX C/C++库或示例代码,用于如何将套接字从一个物理接口重新绑定到另一个物理接口?
例如,我在与物理连接A关联的套接字上进行ping传输,并且我想将该套接字重新绑定到物理连接B,并让ping数据包继续在连接B上发送和接收(在切换过程中短暂延迟后,过度).
我只需要无会话协议.
谢谢
更新:
我正在尝试提供用于PPP和以太网设备的故障转移解决方案.
我有一个基本脚本,可以通过使用iptables,NAT和路由表来完成90%的功能.
问题是发生故障转移时,ping将继续在辅助连接上发送,但是它们的源IP来自旧连接.
我已经和几个从事商用路由器工作的人交谈过,他们的建议是将套接字重新绑定到辅助接口.
更新2:
抱歉,我没有更详细地说明这一点.该解决方案将在路由器上运行.我无法更改ping程序,因为它将在客户端计算机上运行.我仅以ping为例,不是基于会话的任何连接都应该能够切换.我在几台商用路由器上测试了此功能,并且确实可以使用.不幸的是,他们的软件是专有的,但是,通过各种对话和测试,我发现他们在故障转移时重新绑定了套接字.
解决方法:
在您更新的帖子中,问题在于更改路由信息不会更改ping的源地址,只会将其强制出第二个接口. This answer包含一些相关信息.
您需要更改ping程序.您可以使用每个接口的套接字方法,并以某种方式通知程序何时进行故障转移.否则,您必须关闭套接字,然后绑定到第二个接口.
您可以通过两种方式获取所需的接口信息,包括使用SIOCGIFCONF选项调用ioctl()并循环返回的结构以获取接口地址信息.
标签:sockets,c-3,linux,c-4 来源: https://codeday.me/bug/20191210/2103133.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。