Registriert seit: 17. Jun 2009
616 Beiträge
|
AW: Query an Gameserver
26. Feb 2015, 18:27
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;
Du täuschst dich nicht.
Oder als direkte Übersetzung aus dem PHP-Code so:
Delphi-Quellcode:
Move(lBuffer[lPos], lResponseServer.Fourth, SizeOf(lResponseServer.Fourth));
Inc(lPos, SizeOf(lResponseServer.Fourth));
//Move(lBuffer[lPos], lResponseServer.Port, SizeOf(lResponseServer.Port));
lResponseServer.Port := lBuffer[lPos] * 256 + lBuffer[lPos+1];
Inc(lPos, SizeOf(lResponseServer.Port));
Einfach nur eine Zeile im Quellcode geändert und schon kommt der richtige Port-Wert heraus.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
Geändert von BadenPower (26. Feb 2015 um 18:31 Uhr)
|