Was wird in den Socket geschrieben wenn ich eine ENUM Referenz schreibe (unten)? Ich habe etwas in whireshark gefangen, aber es ähnelt nicht dem ENUM-Namen "JOIN" .. es ist auch nicht die gleiche Länge. Der Server versteht irgendwie, dass dieser Code die JOIN enum gesendet hat.Was schreibt C++ in den Socket wenn eine enum geschrieben wird
#include <sstream>
#include <iostream>
... WriteToSocket(SOCKET hSocket, char *buf, int iCount)
send(hSocket, buf, iCount, 0);
enum { JOIN, ...};
m_Command = JOIN;
WriteToSocket (hSocket, (char *)&m_Command, sizeof(m_Command));
Ich hoffe, dass ich genug Informationen und beinhalten Aussagen enthalten ...
Wenn ich eine Enum an eine Buchse schreibe, bekomme ich ein Gefühl von bevorstehendem Untergang. – Corbin
Es ist das Schreiben der Byte-Darstellung von allem, was 'm_Command' in * native Endian * ist. Höchstwahrscheinlich schreibt es eine 4-Byte-Ganzzahl. Wenn Sie jedoch möchten, dass Ihr Code in verschiedenen Compilern und Architekturen stabil ist, verwenden Sie Ganzzahlen mit fester Größe und Netzwerk-Endianness (vgl. ['Htonl (3)'] (http://linux.die.net/man/3/html))). Oder noch besser: Verwenden Sie eine Serialisierungs-/Marshalling-Bibliothek wie [protobuf] (http://code.google.com/p/protobuf/). –
Umso mehr Grund, meinen Ansatz zu unterstützen, den Client neu zu schreiben ... Ich kann den Server jedoch nicht ändern. Leider habe ich noch nicht den Luxus, Druckanweisungen zu kompilieren und hinzuzufügen. – jcalfee314