Bonjour,
Lors d'un développement d'un programme utilisant les sockets en c sur linux (ubuntu 9.10) j'ai rencontrée un problème.
J'ai une partie serveur (qui fait le listen et accepte une connexion) et ensuite envoie en boucle infini un message (disons de taille 4) à mon destinatire.
J'ai une partie cliente (qui se connecte à mon serveur) et reçoit en boucle infini le message (de taille 4 aussi!)
Pour le moment aucun problème le client lit bien ce qu'envoie le serveur.
Lorsque je quitte l'application client (en faisant ctrl+c) ben mon serveur s'arrête de manière très bizarre. En effet la méthode send semble quitter mon application
Voici le code de l'envoie du serveur:
Quand je dis de manière très bizarre c'est que dans la console j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 printf("Before"); n = send(sock,&test2,sizeof(struct test),0); printf("After"); if (n < 0) { perror("ERROR writing to socket"); exit(1); }
Before
After
...
Before
Et c'est tout! Comme si la méthode send a décidé de quitter mon application
Alors qu'en faite je pensais avoir comme sortie
Before
After
...
Before
After
ERROR writing to socket: Connection reset by peer
Est-ce normal le comportement que j'obtiens? Si oui pourquoi? Et aussi au passage si vous avez un moyen de contourner la fin brutal de mon application.
En faisant des tests j'ai remarqué que si le client lit un message de taille 3 et que le serveur envoie tjrs un message de taille 4 ben j'obtiens la sortie d'erreur (mais PAS quand c'est la même taille), d'où le faite que je pense fortement à un problème dans le send.
Merci d'avance
Partager