
我在机器上运行一个应用程序,需要使用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)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)