[FIXED] Holen Sie sich die Ping-Latenz vom Host

Ausgabe

Ich versuche, die Latenz vom Host für eine ziemlich gute Zeit zu bekommen, und ich stecke fest. Ich habe es bereits mit Simple Ping versucht
, aber es scheint, dass es die Latenz nicht zurückgibt.
Das, was ich am nächsten getan habe, war, als ich den
TKC-PingTest für MAC OS verwendet habe. Das funktioniert perfekt, aber nur im iPhone-Simulator, weil ich bei der Verwendung des iPhones eine Fehlermeldung bekomme, weil der Patch “/sbin/ping” von TKC verwendet wird. Außer diesen beiden habe ich schon viele andere ausprobiert und nichts bekommen.

Lösung

Sie können den einfachen Ping einfach erweitern, um die Latenz zu berechnen. Simpleping.h definiert das SimplePingDelegate-Protokoll. Es gibt zwei interessante Methoden – didSendPacketund didReceivePingResponsePacket. Eine naive Implementierung zum Timing der Latenz wäre

@property (strong,nonatomic) NSDate *start;

- (void)simplePing:(SimplePing *)pinger didSendPacket:(NSData *)packet
{
    self.start=[NSDate date];
}

- (void)simplePing:(SimplePing *)pinger didReceivePingResponsePacket:(NSData *)packet
{
    NSDate *end=[NSDate date];
    double latency = [end timeIntervalSinceDate:self.start]*1000.0;

    //TODO - Do something with latency
}

Ich sage, dass dies eine naive Implementierung ist, weil sie sich nicht mit dem Fall befasst, in dem ein anderes Paket gesendet wird, bevor die Antwort empfangen wird, oder in dem Pakete verworfen werden. Um damit umzugehen, müssten Sie die Paketdaten untersuchen, um festzustellen, ob die Sequenznummer zwischen den Sende- und Empfangsereignissen konsistent war.


Beantwortet von –
Paulw11


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like