Zmusić Androida do natychmiastowego wysyłania pakietów UDP?

Eksperymentuję z podłączeniem mojego Galaxy Ace do mojego laptopa przez WiFi. Oba urządzenia są podłączone do routera przez WiFi, a obie strony używają Javy.

Po tym, jak połączenie TCP dało mi od czasu do czasu bardzo wysokie pingi, postanowiłem oprzeć połączenie na UDP, aby móc kontrolować, kiedy pakiety są faktycznie wysyłane.

Jednak wydaje się, że Android nadal buforuje pakiety UDP i nie wysyła ich natychmiast. To lub całkowicie wyłącza WiFi, jeśli przez ułamek sekundy nie są przesyłane dane wychodzące.

Po pierwsze, pingowałem telefon w nieregularnych odstępach czasu mniej więcej raz na sekundę, wielokrotnie wysyłając żądania ping, o ile nie otrzymano odpowiedzi (obejmującej utratę pakietów w 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

Pracowałem nad tym problemem, wysyłając pakiety z telefonu do komputera z zaledwie 1 bajtem danych co 100 ms, nie zmieniając nic w procedurze innej niż ta:

    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

Bardzo ważne jest, aby moja aplikacja miała małe opóźnienia, więc wysyłałbym puste pakiety w ten sposób (przynajmniej tak długo, jak długo nie są przesyłane prawdziwe dane). Zastanawiam się, czy mogę zmusić Androida do jak najszybszej reakcji, bez konieczności rzucania bezużytecznych danych w całej sieci. Czy jest więc bardziej eleganckie rozwiązanie?

Przy okazji zakładam, że problemem jest smartfon, a nie komputer, chociaż może to być także komputer czekający na przychodzące pakiety, a następnie wysyłający swoje pakiety. Z tego, co wiem o sieci, jest to bardzo mało prawdopodobne.

Dzięki za pomoc!

questionAnswers(1)

yourAnswerToTheQuestion