如何指定在用c编写的应用程序中使用的特定NIC(boost asio)

如何指定在用c编写的应用程序中使用的特定NIC(boost asio),第1张

概述我有一台连接到多个独立网络的计算机,每个网络位于不同的NIC(网络接口卡)上.该机器运行 Windows 7. 我在机器上运行一个应用程序,需要使用TCP通过特定的NIC连接到特定的IP.该应用程序使用c 11和boost asio(1.53.0)进行联网,并且可以更改源. 在Windows环境中,有哪些不同的合理方法可以解决此问题(指定端点IP和NIC)? 当前解决方案将相应的(块)IP分配给路 我有一台连接到多个独立网络的计算机,每个网络位于不同的NIC(网络接口卡)上.该机器运行 Windows 7.

我在机器上运行一个应用程序,需要使用TCP通过特定的NIC连接到特定的IP.该应用程序使用c 11和boost asio(1.53.0)进行联网,并且可以更改源.

在windows环境中,有哪些不同的合理方法可以解决此问题(指定端点IP和NIC)?

当前解决方案将相应的(块)IP分配给路由表中的右侧NIC – 使用命令行“route”命令 – 作为持久路由.这样OS就可以处理问题,这是允许但不是必需的.

解决方法 在连接之前,应将 open()bind()套接字连接到端点.在此示例中,我将其绑定到loopback接口,在您的方案中,您可以绑定到NIC的接口.
#include <boost/asio.hpp>intmain(){    using namespace boost::asio;    io_service ios;    ip::tcp::socket sock( ios );    sock.open( ip::tcp::v4() );    sock.bind( ip::tcp::endpoint(ip::address::from_string("127.0.0.1"),0) );    sock.connect( ip::tcp::endpoint(ip::address::from_string("127.0.0.1"),1234) );}

我不是windows程序员,所以我不能提供比这更详细的例子.我相信你可以使用GetAdaptersAddresses通过NIC接口进行枚举.在linux上我会使用getifaddrs(3).

总结

以上是内存溢出为你收集整理的如何指定在用c编写的应用程序中使用的特定NIC(boost asio)全部内容,希望文章能够帮你解决如何指定在用c编写的应用程序中使用的特定NIC(boost asio)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1244373.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存