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);
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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é"
"Sam" <spe@x-media.fr> a écrit dans le message de
news:cbrvi4$c8h$1@s1.read.news.oleane.net...
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é"
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é"