ICS Odbieranie pakietów i bufor

0

Nie wiem czy ten problem dotyczy tylko ICS, ale ogólnie samych gniazdek, ale do rzeczy.

Piszę aplikację klient-serwer i przesyłam dane w pakietach binarnych (nie korzystam z LineMode), wrzucam dane do bufora i wysyłam go, po drugiej stronie odbieram dane i póki co wszystko jest ok, ale na wikipedii od ICS wyczytałem, że dane wysłane po jednej stronie po drugiej mogą dojść w kilku kawałkach. I tak raz wysłane "Hello World" może dojść jako "Hello" i "World". Jak to z tym jest konkretnie? Po dość długich testach przy pakietach o wielkości do 200 bajtów to nic takiego się nie działo, ale podejrzewam, że powyżej paru kB już może się tak dziać? I jak z tym się uporać? Zakodzić jakiś ogólny bufor odbioru, w nagłówku pakietu wysłać rozmiar danych, a do buforu ładować aż nie przyjdzie tyle ile trzeba i wtedy pakiet przetworzyć?

0
Osiołek napisał(a)

Zakodzić jakiś ogólny bufor odbioru, w nagłówku pakietu wysłać rozmiar danych, a do buforu ładować aż nie przyjdzie tyle ile trzeba i wtedy pakiet przetworzyć?
Dokładnie tak. Z tym, że rozmiar danych nie koniecznie musi być wysłany na początku, byle by dało się jakoś określi koniec danych na podstawie ich treści np. bajt zerowy może oznaczać koniec tak jak w c-string'ach.

0

Niestety #0 odpada ze względu iż dane lecą różne od 0 do 255, myślałem nad użyciem BASE64 do kodowania danych binarnych i wtedy stringi elegancko się wysyła za pomocą ICS (ma wbudowany bufor i możliwość ustawienia delimitera w LineMode), jednak 33% przyrost danych mnie nie ciekawi zbytnio.

W każdym razie dzięki za upewnienie mnie w teoriach :).

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