我在PC上有3个网络接口,并且想确保当我执行udp套接字发送时,它通过特定的网络接口发送(我有发送数据时使用的ip地址)。
这是代码。
udp::socket send_socket(io_service,boost::asio::ip::udp::v6());
udp::endpoint local_end_point(boost::asio::ip::address::from_string(LocalIpAddress),1111);
// send_socket.bind(local_end_point);
send_socket.send_to(const_buffer,senderEndpoint,0,error);
上面的代码有效但我无法控制数据通过什么网络接口发送。如果我取消注释send_socket.bind行,我将停止在另一端接收任何数据。
有没有其他方法可以将套接字绑定到特定的网络接口?
答案 0 :(得分:4)
bind()
函数将套接字绑定到特定的网络接口以进行发送和接收。如果您在另一端停止接收数据,则可能是因为另一端无法通过您在bind
呼叫中指定的NIC路由。