Struktur als Nachricht verschicken

july

Erfahrenes Mitglied
Hallo,

ich würde gern an meinen Server eine Nachricht als Struktur verschicken, leider kenn ich dafür nur folgende Methode.
int send ( SOCKET s, const char FAR * buf, int len, int flags );

Diese Methode akzeptiert leider nur chars und ich müsste meine Struktur in langen char array umwandeln. Gibt's alternativen bzw. bessere Lösung?

Grüße July
 
Hallo July,

Du kannst grundsätzlich jeglichen Speicher mit dieser Funktion verschicken. Dass es sich um einen const char* als Parametertyp handelt hat wohl mehr damit zu tun, dass man das Gesendete als "Nachricht" bezeichnet und die vom Verständnis her halt irgendwie mit Zeichenketten verbunden wird. Allerdings kann dich der dritte Parameter (len) vermuten lassen, dass wohl nicht ein 0-terminierter String erwartet wird und so ist es auch in der Tat:
C:
struct MyStruct
{
   int myInt;
   float myFloat;
};

...
MyStruct ms = 
{
   42,
   3.1415926f,
};

send(sock, (const char*)&ms, sizeof(MyStruct), 0);

Wichtig ist dabei aber, dass dies natürlich nur für POD-Typen so funktioniert, da lediglich das Speicherabbild 1:1 übermittelt wird. Komplexe Typen müsstest du manuell serialisieren und dann beim Empfänger wieder deserialisieren.

Gruss
Muepe
 
Zurück