Problem mit Lesen aus dem Socket



  • 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.





Anmelden zum Antworten