Frage

Ich habe Probleme mit der Kommunikation der Positionskoordinaten an einen Satz von Motoren, die ich im Netzwerk angeschlossen habe.Ich kann eine Zeichenfolge einfach gut senden und einen Text vom Motor zurückrufen, aber ich kann es nicht scheinbar einen int-Wert senden.

Verwenden von NSLOG Ich habe festgestellt, dass der tatsächliche Wert, den ich sende, korrekt ist, aber ich vermute, dass meine Methode, sie über den Ausgangsstrom zu senden, falsch ist.Irgendwelche Ideen?

Mein Code zum Senden eines 64-Bit-Int-Werts:

generasacodicetagpre.

War es hilfreich?

Lösung

Nun, Ihre Codes sehen irgendwie lustig aus.Auf jeden Fall, um eine binäre Ganzzahl über das Netzwerk zu senden, müssen Sie die Endness kennen: Der Empfänger erwartet entweder wenig oder große Endanzeigen.

Hier ist der Code für beide:

generasacodicetagpre.

Andere Tipps

Sie sehen wahrscheinlich ein Endianness-Problem.Intel CPUs sind Little-Enderian , was bedeutet, dass das am wenigsten signifikante Byte in einem Multi-Byte-Wert zuerst gespeichert wird, das höchstwertige Byte zuletzt.Wenn Sie eine 8-Byte-Nummer aus dem Speicher lesen und in das Netzwerk einsetzen, ohne etwas zu tun, wird die Bytes in dieser Reihenfolge ausgehen.

Die meisten Netzwerkprotokolle (einschließlich aller Internetprotokolle) erwarten Big-Enderian -Daten, sodass das höchstwertige Byte auf dem Netzwerk zuerst und das am wenigsten signifikante Byte zuletzt erscheint.Erwartet Ihr Netzwerkprotokoll das?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top