boost :: asio - 关于绑定到特定网络接口的说明

ski*_*ear 5 sockets boost-asio

我一直在网上搜索答案,但我似乎找不到完整的答案.

场景:我有一个客户端API和一个服务器.应用程序使用客户端API与服务器通信.TCP和UDP都用于在客户端API和服务器之间进行通信.所有这些都是使用ASIO编写的.

客户端API通过TCP连接到服务器,然后通过TCP发送命令并通过TCP接收响应.客户端API还会侦听UDP地址,以便连续接收实时数据.

环境是运行WIN32和WIN64的混合机器.所有机器也有2个网卡.

问题:我希望能够将我的TCP和UDP连接"固定"到特定的本地网络接口.我已经看到一些信息讨论了SO_BINDTODEVICE套接字选项以及早期帖子或其他网站的绑定功能.

是否可以在WIN32/64环境中执行此操作?如果您能够对此有所了解,一些示例或有用的网站我会非常感激.

我发现的链接:

  1. 使用Linux,如何指定传输哪个以太网接口数据
  2. http://tuxology.net/2008/05/15/forcing-connections-through-a-specific-interface/

Sam*_*ler 8

您可以使用适当的构造函数绑定到特定端点tcp::ip::acceptor

include <boost/asio.hpp>

int
main()
{
    using namespace boost::asio;
    io_service service;
    ip::tcp::endpoint ep(
            ip::address::from_string( "127.0.0.1" ),
            1234
            );
    ip::tcp::acceptor acceptor( 
            service,
            ep
            );
}
Run Code Online (Sandbox Code Playgroud)