Все ответы дают код, который заканчивается чем-то вроде x.x.x.255, и все довольны, но, как мы знаем отсюда, https ://www.wikihow.com/Calculate-Network-and-Broadcast-Address, 255 не всегда правильно. Например, трансляция должна рассчитываться с использованием длины префикса сетевой маски.
Итак, что мне делать, если я использую boost asio:
- получить список всех локальных интерфейсов, используя tcp::resolver::query
- цикл через tcp::resolver::iterator
Код: Выделить всё
2.1 - extract IP from endpoint
Код: Выделить всё
2.2 - need to do something, to determine REAL broadcast address of the network the interface connected to!
Код: Выделить всё
std::set interfaces;
using boost::asio::ip::tcp;
boost::asio::io_service service;
boost::system::error_code ec;
tcp::resolver::query resolver_query(tcp::v4(), hostname(), "", tcp::resolver::query::numeric_service);
tcp::resolver resolver(service);
tcp::resolver::iterator it = resolver.resolve(resolver_query, ec);
if (ec)
{
//std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79031858/broadcast-addresses-for-all-local-netowk-interfaces-and-their-prefix-lengths[/url]