Ich versuche, eine 24-Bit-Nachricht zwischen einem TCP-Server und einem Client zu senden.Wie sende ich einen TCP-Puffer mit verschiedenen Elementgrößen?
So habe ich
uint8_t id = 5;
unint16_t num = 4000;
Also, was ein Weg wäre, sie in einem TCP-Puffer senden? Ich weiß, dass ich das uint16_t in Netzwerkbyte-Reihenfolge umwandeln muss, und ich würde das für das uint8_t nicht tun müssen.
Die Botschaft, die ich hat sende der Lage sein, mit einem dieser Anrufe werden nichtstimulierten als auch
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
Der Kunde eine Nachricht erwartet, die von einem 16-Bit-Zahl, gefolgt von einem 8-Bit-Zeichen besteht . Ich kann das nicht ändern, also muss ich es irgendwie umgehen. Der Client wird die obigen Funktionen auch zum Konvertieren der Nachricht verwenden.
Soweit ich weiß, kann dies nicht mit einem Puffer gemacht werden. Habe ich etwas übergesehen?
Ich denke, das Konzept ist das gleiche, aber der Kunde ist in C++ und der Server ist in Python. Ich habe die Frage nicht richtig markiert. Es sieht so aus, als ob es sich um das Senden wirklich gut kümmert. – user3577756
Um die Empfangslogik in Python zu machen, sehen Sie sich die python-Methode anlit.unpack() an, die für solche Dinge sehr nützlich ist. –
Err, das wäre struct.unpack() (verflucht Autokorrektur!) –