Erreur send()

cs_DJeS Messages postés 18 Date d'inscription mardi 19 février 2002 Statut Membre Dernière intervention 3 juin 2004 - 29 mai 2004 à 12:31
cs_DJeS Messages postés 18 Date d'inscription mardi 19 février 2002 Statut Membre Dernière intervention 3 juin 2004 - 1 juin 2004 à 12:55
avec winsock2 sous devc++, j'obtiens une erreur lors de l'envoi d'un msg avec ma socket en mode connecté stream.
en affichant le SOCKET_ERROR avec cout j'obtiens -1.
je suis pourtant connecté avec l'autre programme (j'execute mes prog client serveur sur la meme machine pr les tests...) puisque ma fct connect() ne renvoi pas d'erreur (SOCKET_ERROR)...
qqun a-t-il une idee des causes eventuelles...?
cette erreur peut -elle avoir qqchose a voir avec un erreur de ma fct recv() sur l'autre prog...?
merci d'avance

DJeS

3 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
29 mai 2004 à 13:19
nan, meme si le recv de l'autre coté est mal codé, le send devrait marcher tout de même

le mieu est encore que tu mette un bout de code
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
29 mai 2004 à 23:09
Je ne suis pas sûr que AnaCrox a raison car il m'arrive de passer une fonction WaitForSingleObject en faisant un test de validité sur le client. Or, si celui-ci n'est pas connecté ou si une erreur socket se présente la boucle agit sur ce nouvel évènement. Donc, (sauf erreur) un client mal configuré (recv notamment) peut engendrer un blem côté serveur:

_loop:

WaitForSingleObject(pi.hProcess, time);
if(send(client, test, strlen(test), 0) == SOCKET_ERROR)
{
printf("Disconnection by user - \n");
goto _escape; // On clôture l'application -
}
goto _loop; // Boucle infinie si rapport distant valide -
0
cs_DJeS Messages postés 18 Date d'inscription mardi 19 février 2002 Statut Membre Dernière intervention 3 juin 2004
1 juin 2004 à 12:55
en fait mon probleme etait que je n'utilisait pas le bon socket...
dans le code que j'ai utilisé, il ya un socket sock utilisé pr la fct bind et listen...mais au moment de la fct accept j'ai csock(l'autre socket declarée)=accept(sock......)
pour ma fct send je devais utiliser csock...mais diable je ne comprend pas trop ce que viens faire la deuxieme socket ici et pourquoi je ne peux pas utliser la premiere pr communiquer avec mon client puisque c'est a elle (sock) qu'il se connecte...
DJeS
0
Rejoignez-nous