private TraceRouteContainer trace(String ip, int ttl) {
            String res = launchRoute(ip, ttl);
            if (!this.isInterrupted() && res != null && res.length() > 0) {
                res = res.toLowerCase();
                if (res.contains(Cmd.PING_EXCEED) || !res.contains(Cmd.PING_UNREACHABLE)) {
                    // Succeed
                    String pIp = parseIpFromRoute(res);
                    if (!this.isInterrupted() && pIp != null && pIp.length() > 0) {
                        Ping ping = new Ping(4, 32, pIp, false);
                        mPing = ping;
                        ping.start();
                        TraceRouteContainer routeContainer = new TraceRouteContainer(ttl, pIp, mPing.getLossRate(), mPing.getDelay());
                        mPing = null;
                        isArrived = pIp.contains(ip);
                        return routeContainer;
                    }
                }
            }
            isError = true;
            return null;
        }
TTL Route

@param ip  ip
@param ttl ttl
@return isError
caprice/kit-cmd/src/main/java/net/qiujuer/genius/kit/cmd/TraceRoute.java