union per send() verschicken?
-
(char*)&uMessage
-
Morgen,
uMessage.iNr = 1; strcpy(uMessage.cMsg, "Hallo Welt");
dir ist klar, dass in iNr danach keine 1 mehr steht?
mfg
v R
-
nein oO
achso ist ne union etwa im grunde nue EINE variable, die verschiedene datentypen enthalten kann?hmm wenn das so ist,
kann man ne struct verschicken?
-
pixartist schrieb:
kann man ne struct verschicken?
Ja, genau so wie deine Union. Jeder flache Datentyp kann einfach verschickt werden.
-
cool
struct uMsg { int iNr; char cMsg[256]; }; char buf[256] = {0}; while(1) { scanf("%s",buf); printf("Eingabe:%s\n",buf); int nC = lookForCommand(buf); uMsg uMessage; switch(nC) { case 0: uMessage.iNr = 1; strcpy(uMessage.cMsg, buf); send (sock,(char*)&uMessage,sizeof(uMsg),0); break; case 1: return 0; break; case 2: uMessage.iNr = 2; strcpy(uMessage.cMsg, "Hallo Welt"); send (sock,(char*)&uMessage,sizeof(uMsg),0); break; default: break;
also hier verschick ichs dann als char, aber wie kann ichs dann wieder in ne struct umwandeln? danke
-
na beim empfangen einfach auf den speicheranfang einer entsprechenden struct leiten?
du musst nur aufpassen, dass du auch haargenau die gleiche zahl an bytes von der verbindung liest. schick am besten vorher eine längenangabe mit.
-
Jo, da sind wir dann wieder beim "Problem" Padding-Bytes angelangt.
-
c.rackwitz schrieb:
na beim empfangen einfach auf den speicheranfang einer entsprechenden struct leiten?
sry , aber wie mach ich das?
-
pixartist, mit ein bisschen pointern.
guck dir read() an, oder womit auch immer du daten empfängst.
mehr erklär ich nicht, sonst komm ich mir noch blöd vor.
-
hab msdn nach recv gesucht, nix gefunden
nu bitte sags dochmal
-
Na ich denke mal, gemeint ist, wenn du ein char* hast. Dann kannst du das auch als Struktur interpretieren, wenn du einen Zeiger drauf castest. So in etwa:
typedef struct { int a; int b; } TMyStruct; struct TMyStruct *pMyStruct; char *pStr; // Wenn du jetzt Daten in pStr hast, kann man die auch so interpretieren pMyStruct = (struct TMyStruct *)pStr;
Wenn die Daten vorher auch so in pStr geschrieben wurden, kannst du dann pMyStruct wieder als Struktur interpretieren.
(Ich hoffe, das ist jetzt irgendwie verständlich. :D)
-
ja, das ist verständlich, vielen dank!