0
도움이되는 간단한 traceroute 프로그램을 개발합니다 boost_asio
. 이 example을 사용합니다. ping
대신 traceroute
을 구현하기 위해이 예제를 조금 변경했습니다.소켓의 응답을 얻는 방법?
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
이 필요한 것보다 적 으면 아무런 반응이 없습니다. 나는 이런 식으로 뭔가 얻을하고자하는 (그 문제에 대한 또는 부스트) 나는 ASIO 많은 부스트를 사용하지 않은
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