![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
recluster
Merci de ton aide Emmanuel .
Je pensais pouvoir simplifier se processus en utilisant sdl_net
C'est pas un problème de SDL_net ou pas. C'est le moyen de coder les données qui est faux et que j'ai remplacé par une méthode sure, standard, portable et éprouvé.
Tu peux faire exactement la même chose avec SDL_net (j'ai simplement utilisé les fonctions que je connais par coeur, parce que pour moi, c'est plus simple).
car j'ai deja envoyer des int avec sdl_net ,sa marche niquel mais lorsque c'est une strucure sa marche plus .
C'est peut être la preuve que ce n'est pas si 'nickel'...
ceci marche parfaitement:
1 2 3 4 5 6 7
|
SERVEUR
printf("envoi au client de num_joueur nb_joueur , nb_ppj \n");
int temp_nb;
temp_nb = nb_client+1;
char* num_joueur = &temp_nb;
SDLNet_TCP_Send(mclient->socket_client,num_joueur,strlen(num_joueur)); |
Ca ne fonctionne pas du tout car le comportement est indéterminé. num_joueur n'est pas une chaine valide. Si on passe à strlen() l'adresse d'une chaine invalide, le comportement est indéfini.
Attention, on ne peut en aucun cas se fier au seul comportement visible pour valider un fonctionnement. Il faut d'abord éliminer les comportements indéfinis, ce qui ne peut se faire qu'à la main (contrôle visuel par du personnel qualifié).
Nota :
char* num_joueur = &temp_nb;
devrait provoquer un warning sur la plupart des compilateurs...
Partager