A co do getData() to metoda to zwraca wcześniej zadeklarowany bufor wypełniony właśnie polem danych z pakietu. Jeśli jednak pole danych będzie krótsze niż zadeklarowany bufor zostanie on dopełniony zerami. Oczywiście mógłbym zadeklarować długość bufora na taką wielkość jaką maja interesujące pola danych w pakietach, ale chciałbym znać jednak długość tego pola wcześniej. Wnioskuje jednak, że tego się nie da bez schodzenia na niższą warstwę modelu OSI.
PS. Mi się mieści (a na głównej liście wątków masz dymek/chmurkę z pełna treścią). Regulamin forum narzuca limit znaków w temacie? Moim zdaniem czepiasz się, albo się nudzisz. Przecież nie masz obowiązku uczestniczenia w dyskusjach na tym forum.
Tak masz racje, czepiam się :)
Nie nie nudzę się mam full zajęć :)
tak GetData zwraca bufor - referencje na niego
możesz odbierać tylko i wyłącznie kontent, nie odczytasz danych warstwy transportowej i sesji bezpośrednio korzystając z implementacji socketów zawartych w sdk. Poza tym, mam wrażenie, że chcesz na siłę zejść warstwę niżej zawijając to co jest wyżej - socket i tak ładuje dane w bufor np w przypadku strumieni, nigdy nie czytasz "bezpośrednio" z sieci a zawsze z bufora danych (nawet sprzętowego) - takie zachowanie jak w przypadku buforowanych strumieni (programowo oczywiście czyli np BufferedInputStream BufferedOutputStream)
Standardowo paczki UDP mają po 8 kb - nie ma co kombinować, tylko przyjąć taką konwencje. Nie wiem czemu chcesz przesyłać takie małe porcje danych.
Problem który Ty przedstawiasz, powinien się właśnie tyczyć dużych ilości danych na które trzeba przygotować n-kb buffor. Czy na serio byłby problem wykorzystywać do odbioru ciągle jeden bufor? Prawdę mówiąc (nie znam Twojego celu działania - nie wiem czemu tak chcesz coś zrobić nie inaczej) to zrobisz większy narzut na zasoby i czas pracy procesora w ten sposób rozwiązując transmisje, niż korzystając z jednego bufora - ale też nie wiem czy to jest Twoim celem.
EDIT. :
Przeczytałem jeszcze raz - rozumiem, chcesz wyciągać pakiety o określonej długości - swoisty filtr.
Nie nie zrobisz tego w sposób przedstawiany przez Ciebie - nie odczytasz bezpośrednio długości pakietu.
Musisz go zaciągnąć, sprawdzić co Ci potrzebne i dalej działać - albo tak jaj już trzeci raz napisze, obsłużyć niższą warstwę i doimplementować metdoę filtrującą do samej implementacji socketa