Wenn mich nicht alles täuscht kommt der Port als Big Endian an.
Du musst also die Bytereihenfolge tauschen nachdem du den Port ausgelesen hast.
Das geht z.B. mit dieser Funktion:
Delphi-Quellcode:
function SwapWord(W: Word): Word;
asm
xchg al, ah
end;
// ....
Move(buffer[i], response.Port, SizeOf(response.Port)); inc(i, SizeOf(response.Port));
response.Port := SwapWord(response.Port);
Edit: Auch wenn mir das komisch erscheint weil alle anderen Werte doch als Little Endian ankamen oder nicht?
Aber laut
Code:
$a5 = ord(fread($socket,1))*256 + ord(fread($socket,1));
ist das erste Byte ja scheinbar das MSB, daher Big Endian.
(Das irritiert mich grad selbst etwas aber schau mal obs so funktioniert
)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."