Я разрабатываю простую программу traceroute с помощью boost_asio
. Я использую это example. Я немного изменил этот пример, чтобы реализовать traceroute
вместо ping
.Как получить ответ сокета?
pinger(boost::asio::io_service& io_service, const char* destination)
: resolver_(io_service), socket_(io_service, icmp::v4()),
timer_(io_service), sequence_number_(0), num_replies_(0)
{
boost::asio::ip::unicast::hops option(%1%); // 1 is a param
socket_.set_option(option);
icmp::resolver::query query(icmp::v4(), destination, "");
destination_ = *resolver_.resolve(query);
start_send();
start_receive();
}
У меня проблема. Когда time to live
меньше, чем нужно, у меня нет никакого ответа. Я хотел бы получить что-то вроде этого:
C:\Users\>ping 91.92.100.254 -i 2
Pinging 91.92.100.254 with 32 bytes of data:
Reply from 10.110.50.251: TTL expired in transit.
Reply from 10.110.50.251: TTL expired in transit.
Reply from 10.110.50.251: TTL expired in transit.
Спасибо за подробный ответ – Denis