Cykliczne odbieranie danych przez TCP (Android)

0

Witam, zatrzymałem się w pewnym punkcie tworzenia mojej aplikacji i nie wiem jak go rozwiązać...

Otóż wysyłam obraz z serwera (C#) przez TCP, a następnie odbieram go przez aplikacje kliencką na androidzie i wyświetlam. Wszystko jest ok gdy wysyłam tylko jeden obraz, odbieram go i wyświetlam w głównym wątku w imageview za pomocą Handler'a. Ale moim zadaniem jest powtarzanie czynności wysyłania i odbierania kolejnych obrazów.

Serwer działa asynchronicznie i dane wysyłam dajmy na to co 100 ms w pętli while. Po stronie klienta również chce te dane odbierać cyklicznie (w pętli while ???). Problem w tym że tak samo pierwszy obraz klient zdążył odebrać ale przy następnej iteracji pętli kolejnych danych już nie odbiera (a serwer nadal wysyła co 100ms dane tak jakby go nie obchodziło czy klient zdążył je odebrać czy nie). W efekcie klient za pierwszym razem odbiera obraz a w kolejnych iteracjach null.

Jak rozwiązać ten problem ? Czy jest jakieś lepsze rozwiązanie niż np. wysyłanie przez klienta komunikatu do serwera o odebranych danych aby ten mógł wysłać kolejny zestaw danych ?

0

Próbowałem już z AsyncTask'iem. Ograniczeniem dla niego jest to że w ramach jednego wywołania możemy wykonać tylko raz kod (w sensie że nie da się powtarzać wykonywania jakieś tam metody i wyświetlać jej efektów w Activity). Pewnie dałoby się to w jakiś sposób zrobić ale moje doświadczenie nie jest tak wysokie aby sobie z tym poradzić. Co do wyżej napisanej wiadomości po stronie serwera zmieniłem że ma wysyłać dane w innych odstępach czasu (sleep z 100 ms na 1s) i o dziwo działało ale nie za długo. Po jakiś 10 iteracjach odbieranie obrazu stawało. Stwierdziłem że zaimplementuję rozwiązanie którym jest wysyłanie komunikatów do serwera gdy dane zostaną odebrane, by ten mógł wysłać kolejne.

1

Callback do serwera jest ok. W momencie kiedy plik jest zapisany odpowiada ok dawaj następny. Wtedy nie przejmujesz się prędkością przesyłu danych ani wielkością. Proste i skuteczne

1 użytkowników online, w tym zalogowanych: 0, gości: 1