2012-05-23 4 views
9

Mögliche Duplizieren:
Iphone detect 3g or wifiiOS Detecting Verbindungsgeschwindigkeit oder Typ

ist es eine Möglichkeit, die aktuelle Netzwerkgeschwindigkeit zu erhalten oder wenn das Gerät auf EDGE/3G/GPRS? Ich kann Erreichbarkeit verwenden, um WiFI von WMAN zu unterscheiden, aber das ist nicht genug für meine Anwendung.

+1

Kein Duplikat! –

+0

@ Gunjotsingh die Antwort für die ursprüngliche Frage ist eigentlich hier: https://StackOverflow.com/a/34333204/751932 Obwohl die Frage über die Verbindungsgeschwindigkeit wurde als Duplikat für diese markiert ... – Speakus

Antwort

11

Wenn Sie wirklich wissen müssen, müssen Sie dafür testen.

Richten Sie eine Verbindung zu einem bekannten Server mit niedriger Latenz ein. Markieren Sie in einem separaten Thread die Zeit (Zeit A) und senden Sie ein Paket (stellen Sie sicher, dass es ein Paket ist). Warte auf diesen Thread. Markieren Sie die Zeit des ersten Pakets (Zeit B). Lesen Sie die Daten bis zum Ende. Markieren Sie die Zeit des letzten Pakets (Zeit C). Stellen Sie sicher, dass die Serverantwort mindestens drei Pakete umfasst.

Zeit B - Zeit A ist eine sehr grobe Schätzung der Latenz. Zeit C - Zeit B ist eine sehr grobe Schätzung der Bandbreite.

Da Sie so genau wie möglich arbeiten möchten, verwenden Sie die niedrigste Ebene des Netzwerkzugriffs, den Sie zur Verfügung haben (ich glaube auf dem iPhone, das ist Sockets). Verwenden Sie zufällige Datenblöcke mit festen Längen als Ihre Anfrage und Antwort. Ein paar Bytes für die Anforderung sollten ausreichen, aber die Antwort muss gut konstruiert sein. Stellen Sie sicher, dass der Server ein kleines erstes Paket und dann eine Folge von Paketen sendet, die groß genug ist, um drei oder mehr Pakete zu füllen.

An diesem Punkt müssen Sie testen. Testen, testen, testen und testen. Testen Sie die verschiedenen Netzwerktypen, testen Sie mit unterschiedlichem Netzwerkverkehr, testen Sie mit Switching-Netzwerken und testen Sie alles, was Ihnen einfällt.

+1

interessante technische Ansatz dazu. Also unabhängig von WIFI oder 3G etc ... Dies sollte eine Schätzung der verfügbaren Bandbreite geben. Ich suchte nach einer Lösung wie dieser, damit ich logisch entscheiden kann, ob ich große oder kleinere Bilder über das Netzwerk ziehen möchte. Die kleineren werden für Szenarien mit geringerer Bandbreite bevorzugt – jcpennypincher