开发者

How to set local endpoint when using boost asio udp socket

I have 3 network interfaces on pc and want to make sure that when I do ud开发者_StackOverflow社区p socket send, it sends via a specific network interface ( I have the ip address to use when sending data).

Here is the code.

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);

The above code works but I dont have control over what network interface the data would be sent through. If I uncomment the send_socket.bind line, I stop receiving any data on the other end.

Is there any other way to bind a socket to a particular network interface?


The bind() function ties your socket to a specific network interface for sending AND receiving. If you stop receiving data on the other end it's likely because the other end is not routable via the NIC that you've specified in the bind call.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜