我一直在网上寻找答案,但似乎找不到完整的答案。
场景:我有一个客户端API和一个服务器。应用程序使用客户端API与服务器通信。TCP和UDP都用于客户端API和服务器之间的通信。所有这些都是用asio编写的。
客户端API通过TCP连接到服务器,然后通过TCP发送命令并通过TCP接收响应。客户端API还监听一个UDP地址,在该地址中它连续地接收实时数据。
环境是运行win32和win64的机器的混合体。所有的机器都有2个网卡。
问题:我希望能够“固定”我的TCP和UDP连接到特定的本地网络接口。我看到一些关于 SO_BINDTODEVICE socket选项以及来自早期文章或其他站点的bind函数。
SO_BINDTODEVICE
在Win32/64环境中可以这样做吗?如果你能在这方面有所了解,一些例子,或是有帮助的网站,我会非常感谢。
我找到的链接:
可以使用适当的 tcp::ip::acceptor constructor
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 ); }