sieciowa kolejność bajtów

sieciowa kolejność bajtów
GA
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam

Chciałbym poruszyć kwestię kolejności przesyłanych bajtów liczb całkowitych w aplikacjach sieciowych delphi.
Mam serwer TCP, który odczytuje strumienie danych, w których występuje m.in. integer. Jeśli strumień wysyłam z klienta napisanego w delphi wszystko jest ok. Jeśli wysyłam z aplikacji javowej to wartości całkowite są nieprawidłowe.
Chcę zapewnić kompatybilność mojej aplikacji serwerowej napisanej w delphi z innymi klientami.

Moje pytanie brzmi: Czy odwracanie kolejności bajtów przed wysłaniem i po odebraniu danych z sieci w aplikacjach delphi jest prawidłowym rozwiązaniem tego problemu?

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

function Swap(Value: Integer): Integer; overload;
var Temp, i: Integer;
begin
Temp := Value;
Value := 0;
for i := 0 to 3 do
begin
Value := (Value shl 8) or (Temp and $FF);
Temp := Temp shr 8;
end;
Result := Value;
end;

przed wysłaniem potraktuj integera tą funkcją

nav
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
0

@up W delphi brakuje funkcji ntohl, ntohs, htonl i htons, które służą do konwersji Network To Host i odwrotnie?

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0

Są przecież to funkcje API zadeklarowane są w module WinSock

GA
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie chodzi mi o to jak odwrócić bajty bo to najmniejszy problem.

Chcę się tylko dowiedzieć jak napisać aplikację serwerową do której będą mogły się podłączać aplikacje klienckie napisane w innych językach i pracujących na innych platformach sprzętowych.

nav
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
0

Dopóki wszystkie aplikacje będą korzystać z takiego samego protokołu, wszystko powinno działać - niezależnie od języka - w końcu wiesz co piszesz/czytasz z socketa.
A wartości liczbowe, zajmujące więcej niż 1 bajt zawsze traktuj funkcjami hton* przy przesyłaniu, oraz ntoh* przy odczytywaniu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.