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...
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.
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é.
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 ;)
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é.