(WinAPI) Winsock
-
Weil ich die Größe vor den Empfangen der eigendlichen Nachricht abfragen muss, habe ich sie an den Anfang eines char* vorangestellt. Somit kann ich erst die Größe der zulesenden Bytes lesen und den buffer dann auslesen. Leider funktioniert das nicht, kann mir einer helfen?
hier der code:
int bytecounter = 0; char* recbyte = NULL; //Information der Größe auslesen if (recv (daMember[counter].Socket, (char*) &bytecounter, sizeof (int), 0) != sizeof (int)) { //Socketerror zurückliefern return SOCKET_ERROR; } else { recbyte = new char [bytecounter]; int n = recv (daMember[counter].Socket, recbyte, bytecounter, 0); char* probe = recbyte; } //UI- Struktur füllen memset (&userinformation, 0, sizeof (UI)); //erstes Byte (BOOLEAN) des Empfangsbuffers in registry kopieren memcpy (&userinformation[counter].registry, recbyte, sizeof (bool)); //für den Fall eines Gastzuganges if (userinformation[counter].registry == false) { userinformation[counter].nickname = new char [100]; //Nicknamen rauskopieren memcpy (&userinformation[counter].nickname, recbyte + sizeof (bool), bytecounter - sizeof (bool)); //userinformation[counter].nickname = "hallo"; cout << &userinformation[counter].nickname << endl; cout << userinformation[counter].nickname << endl; daMember[counter].myuser = new char [bytecounter]; memcpy (daMember[counter].myuser, userinformation[counter].nickname, bytecounter - sizeof (bool)); } //ansonsten weitere Daten rauskopieren else { }
kann mir einer helfen ? wäre sehr nett.
-
Passt besser nach WinAPI.