Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 13 utilisateurs en ligne, consultez le détail
Auteur Message
ganlhi
#0 Message posté le : 13-03-2007 à 09:37:26


Hobbit


Forum : Inscrit
Association :
Arrivé(e) le : 07-07-2003
Nombre de messages : 1722
Bonjour tout le monde !

J'ai un petit probleme. Je veux envoyer un paquet UDP dont le champ data est constitué comme ça :

int SimpleTextFrame::buildDataToSend(char *buf)

{

    //code est un entier, msgSize aussi, déjà initialisés

    //msg est une string

    memcpy(buf,&code,sizeof(int));

    memcpy(buf+sizeof(int),&msgSize,sizeof(int));

    strncpy(buf+2*sizeof(int),msg.c_str(),msgSize*sizeof(char)+1);



    return (2*sizeof(int)+msgSize*sizeof(char)+1);

}



...

UDPpacket *pack = SDLNet_AllocPacket(SGNE_MAX_MSG_LENGTH);

if (pack != NULL)

{

    int len = frame->buildDataToSend((char*)pack->data);

    pack->channel = channel;

    pack->len = len;

    pack->address = address;



    ok = (SDLNet_UDP_Send(sock, channel, pack) > 0);



    SDLNet_FreePacket(pack);

}

...



Probleme : à la réception la premiere partie du message (code) est ok, mais la partie correspondant à msgSize est à 0 et celle de msg est vide...
Quelqu'un aurait une idée de la cause ?

Merci d'avance.



-------------------------------------
GANLHI

http://ganlhi.jexiste.fr
Linux User n°366208

"Pour gagner ce jeu, il faut une jolie boîte, une jolie copine, et le reste on s'en fout"