ICS Odbieranie pakietów i bufor

Odpowiedz Nowy wątek
2008-10-07 12:27

Rejestracja: 13 lat temu

Ostatnio: 7 lat temu

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ć?

Pozostało 580 znaków

2008-10-07 12:46

Rejestracja: 16 lat temu

Ostatnio: 6 lat temu

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.

Pozostało 580 znaków

2008-10-07 18:37

Rejestracja: 13 lat temu

Ostatnio: 7 lat temu

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 bądź razie dzięki za upewnienie mnie w teoriach :).

Pozostało 580 znaków

Odpowiedz

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