Android zum sofortigen Senden von UDP-Paketen zwingen?

Ich experimentiere damit, mein Galaxy Ace über WLAN mit meinem Laptop zu verbinden. Beide Geräte sind über WLAN mit einem Router verbunden und beide Seiten verwenden Java.

Nachdem mir eine TCP-Verbindung von Zeit zu Zeit sehr hohe Pings gegeben hatte, entschied ich mich, die Verbindung auf UDP aufzubauen, um kontrollieren zu können, wann die Pakete tatsächlich gesendet werden.

Offenbar puffert Android UDP-Pakete jedoch immer noch und sendet sie nicht sofort. Dies oder es schaltet WiFi vollständig aus, wenn für einen Bruchteil einer Sekunde keine ausgehenden Daten übertragen werden.

Erstens habe ich das Telefon in unregelmäßigen Abständen etwa einmal pro Sekunde gepingt und wiederholt Ping-Anfragen gesendet, solange keine Antwort empfangen wurde (dies betrifft den Paketverlust bei UDP):

    computer -> phone -> computer
    Pinging 192.168.1.40: 148.05968ms
    Pinging 192.168.1.40: 524.41156ms
    Pinging 192.168.1.40: 705.8688ms
    Pinging 192.168.1.40: 3.705367ms
    Pinging 192.168.1.40: 3.872159ms
    Pinging 192.168.1.40: 549.4541ms
    Pinging 192.168.1.40: 479.29843ms
    Pinging 192.168.1.40: 3.89936ms
    Pinging 192.168.1.40: 428.85876ms
    Pinging 192.168.1.40: 739.28125ms

Ich habe dieses Problem umgangen, indem ich alle 100 ms Pakete von Telefon zu Computer mit nur 1 Byte Daten gesendet habe und an der Routine nichts anderes geändert habe:

    computer -> phone -> computer
    Pinging 192.168.1.40: 4.147753ms
    Pinging 192.168.1.40: 3.738213ms
    Pinging 192.168.1.40: 14.133768ms
    Pinging 192.168.1.40: 4.470561ms
    Pinging 192.168.1.40: 3.628386ms
    Pinging 192.168.1.40: 3.898334ms
    Pinging 192.168.1.40: 3.512401ms
    Pinging 192.168.1.40: 7.907006ms
    Pinging 192.168.1.40: 5.234216ms
    Pinging 192.168.1.40: 5.639137ms

Für meine Anwendung ist eine geringe Latenz von entscheidender Bedeutung, sodass ich weiterhin leere Pakete wie diese senden würde (zumindest solange keine echten Daten übertragen werden). Ich frage mich, ob ich android zwingen kann, so schnell wie möglich zu antworten, ohne unnötige Daten im gesamten Netzwerk zu werfen. Gibt es eine elegantere Lösung?

Übrigens gehe ich davon aus, dass das Problem das Smartphone ist, nicht der Computer, obwohl es auch der Computer sein könnte, der auf eingehende Pakete wartet und dann seine Pakete sendet. Soweit ich über Netzwerke Bescheid weiß, ist dies jedoch sehr unwahrscheinlich.

Danke für Ihre Hilfe!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage