Transmission impossible sans MessageBox ? [Résolu]

Signaler
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Bonsoir,

Voila, il m'arrive un truc assez bizarre, j'ai remarqué ce probleme depuis quelques jours déja, et j'avoue que je n'y trouve aucune solution...
Dans le code suivant, si je mets la MessageBox() qui est en commentaire, le tab iCards est correctement envoyé, alors que si je ne le mets pas, il n'est pas correctement envoyé :

for (i = 0; i < 32; ++i) { //Melange les cartes
temp = iCards[i];
j = getrandom(0, 10);
iCards[i] = iCards[j];
iCards[j] = temp;
}
send(sck_other, "DEAL", 5, 0);
//MessageBox(0, 0, 0, 0);
send(sck_other, (const char *)iCards, 128, 0);

Je trouve ca VRAIMENT bizarre, et ne vois pas pkoi il se passe ca, si quelqu'un a une explication...

Merci beaucoup d'avance ;)

++

9 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Si tu enleve la messagebox, y'a de forte chances pour que le "DEAL" et le tableau soient envoyés en meme temp.
Et dans ce cas la, ce n'est pas un probleme, c'est normal en tcp/ip.
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Ok merci, donc en fait, je vais pas m'embeter, je vais faire 1 envoi et je me debrouillerai par la suite. C'est meme beaucoup mieux, merci aardman.

++
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
En TCP, tout ce que tu envoies doit etre mis dans une structure qui contient la taille des données que tu envoies. Comme ca, celui qui recoit peut extraire chaque "message" de donnée que tu envoies, sans ambiguité.
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Tu veux parler d'une structure de ce genre :

struct packet {
int len;
char msg[256];
}

?

Je ne vois pas trop l'interet alors, puis ce que send permet de specifier la taille du msg a envoyer.
J'ai ptet mal compris ce ke tu voulais me dire, donc n'hesite pas a m'embeter ;)

Merci

++
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
En gros c'est ca, sauf que je mettrais msg[1].
Pour chaque paquet, il faudra allouer la structure dynamiquement afin de controler la taille du tableau msg[].

L'interet est simple: si tu recois 2 messages (ou plus) en meme temp, tu peux facilement les retrouver et les extraire car tu as la taille de chaque message.
Dans le code que tu montres plus haut, les 2 messages sont envoyés en meme temp, et visiblement ca a posé probleme car tu pensais que le 2eme message n'etais pas envoyé.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
soluce : temporiser
Magic Nono: l'informagicien! 8-)
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
magic_Nono > j'espere que tu es pas serieux...
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
non, dslé
mais ceci dit, ça doit etre une soluce au pire...
en attendant de mettre mieux en place.

Parfois, il faut savoir mettre temporairement une solution dégradée en place
Amicalement
Magic Nono
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Euh temporiser, tu veux dire koi par la ? send(); sleep(x); send() ???