OVH Cloud OVH Cloud

socket

1 réponse
Avatar
Sam
Salut à tous, juste un petit probleme avec les sockets.

j'ai fait un petit client/server en C

Cote server, une connexion "classique" style ;

...
while (true)
{
sd_client = accept(sd,(struct sockaddr *)&cin,&addrlen);

n = recv(sd_client,buffer,sizeof(buffer),0);

buffer[n]=0;
printf("from cli : %s\n", buffer);


// envoie au client une info
sprintf(buffer, "ok %d\n", j++);
if (send(sd_client,buffer,strlen(buffer),0) == -1)
{
perror("send");
exit(1);
}

close (sd_client);
}



Maintenant quand j'essaye de me connecter avec le client :

La premiere connexion marcue parfaitement : le serveur la recoit
correctement
n = send(sd, "essai de chaine",strlen("essai de chaine"),0);
n = recv(sd, buffer, bufsize,0);
buffer[n]=0;
printf ("from srv : %s\n",buffer);

Par contre si a la suite je fais

n = send(sd, "test 2",strlen("test 2"),0);
n = recv(sd, buffer, bufsize,0);
buffer[n]=0;
printf ("from srv : %s\n",buffer);

le serveur ne recoit rien !!???


Ou est mon erreur ????

Merci d'avance a tous

1 réponse

Avatar
Johann Dantant
"Sam" a écrit dans le message de
news:cbrvi4$c8h$
Salut à tous, juste un petit probleme avec les sockets.

j'ai fait un petit client/server en C



Pas du tout le bon groupe, essaye sur un forum consacré au développement
Windows et/ou IP...

<HS>
while (true)
{
sd_client = accept(sd,(struct sockaddr *)&cin,&addrlen);

n = recv(sd_client,buffer,sizeof(buffer),0);

buffer[n]=0;
printf("from cli : %sn", buffer);



Pas de test sur n < 0 ...

// envoie au client une info
sprintf(buffer, "ok %dn", j++);
if (send(sd_client,buffer,strlen(buffer),0) == -1)
{
perror("send");
exit(1);
}

close (sd_client);



Donc fermeture de la connexion du client.

}



Maintenant quand j'essaye de me connecter avec le client :

La premiere connexion marcue parfaitement : le serveur la recoit
correctement
n = send(sd, "essai de chaine",strlen("essai de chaine"),0);
n = recv(sd, buffer, bufsize,0);
buffer[n]=0;
printf ("from srv : %sn",buffer);



Au moment où tu reçoit ça, le serveur ferme la connexion qui t'était
affectée.

Par contre si a la suite je fais



A la suite c'est après déconnexion/reconnexion côté client, ou à la suite
vraiment ? Si c'est bien la seconde hypothèse...

n = send(sd, "test 2",strlen("test 2"),0);
n = recv(sd, buffer, bufsize,0);
buffer[n]=0;
printf ("from srv : %sn",buffer);

le serveur ne recoit rien !!???



Ben c'est normal il a fermé la connexion du client.

Ou est mon erreur ????



Partout donc. Reprendre un bon bouquin et recopier un exemple, c'est
toujours mieux pour commencer, et apprendre à lire la charte d'un newsgroup
avant de poster.

</HS>

J.D.
--
> Bon, je recherche toujours un mec qui " touche " sous linux sur rochefort
Il m'arrive de toucher, mais dans ces moments la, je pense pas trop a
linux.
-+- ST in Guide du linuxien pervers : "Linux c'est une affaire de doigté"