sieciowa kolejność bajtów

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?

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ą

0

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

0

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

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.

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.

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