Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1729 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

socket

n°135711
10couNAS
Posté le 08-08-2002 à 10:04:41  profilanswer
 

Communication entre un client et un serveur en mode TCP:
- Le client et le serveur sont connectés => pas de pb
- Le client se déconnecte
Si le serveur faisait un write(socket...) sur la socket, il reçoit le signal SIGPIPE
Si le serveur faisait un read(socket...) sur la socket, aucun signal SIGPIPE n'est élis alors je ne sais pas comment je peux procéder pour mettre avertir le serveur que le client s'est déconnecté

mood
Publicité
Posté le 08-08-2002 à 10:04:41  profilanswer
 

n°135798
momch
Moueps.
Posté le 08-08-2002 à 12:29:30  profilanswer
 

utilise plutot poll() ou select() pour verifier l'etat
des tes connections avant d'ecrire ou de lire dedans.
 
tu peu tester plusieurs etats et y compris savoir si tu peu ecrire
ou pouvroir lire. ca t'evite un tas de soucis.

n°135920
10couNAS
Posté le 08-08-2002 à 15:20:03  profilanswer
 

momch, j'ai essayé poll comme tu m'avais conseillé.
Ca m'a l'air très bien sauf que ça ne foncionne pas comme c'est écrit dans les pages de man
 

Code :
  1. pollfds.fd=socket_client;
  2. pollfds.events = POLLIN;
  3. rc = poll((struct pollfd *) & pollfds, 1, -1);
  4. if(rc == -1){
  5. perror("poll" );
  6. exit(1);
  7. }
  8. fprintf(stdout,"rc=%d, et revent=%hd\n",rc,pollfds.revents);
  9. if(pollfds.revents == POLLHUP)
  10. {
  11.  puts("POLLHUP !!" );
  12.  exit(1);
  13. }


Ce bout de code fait partie du code du client.
Je lance le serveur, je lance le client, le serveur envoit qqch au client => le client lit en boucle sur sa socket
Je stoppe le serveur => normalement, poll devrait me renvoyer POLLHUP mais il continue à renvoye POLLIN :fou:

n°135931
10couNAS
Posté le 08-08-2002 à 15:45:30  profilanswer
 

je viens de trouver pourquoi ça marche pas
POLLIN
        Data other than high-priority data may be read without blocking. For STREAMS, this flag is set in revents even
        if the message is of zero length.

 
Comme j'utilise une socket TCP => socket de type STREAM, ça ne fonctionnera pas :non:
 
C'est dommage, pq cette fonction poll, c'était exactement ce que je voulais.
Je vais essayé avec select comme tu m'as dit

n°135934
10couNAS
Posté le 08-08-2002 à 15:50:08  profilanswer
 

Non je viens de dire n'importe quoi :D
je devrais quand même recevoir POLLHUP quand la connexion entre le client et le serveur est coupée


Aller à :
Ajouter une réponse
 

Sujets relatifs
mysql : socket, port ou les deux ??socket TCP pb1
socket[ MySql ] prob de socket...
pureftpd / mysql : Socket operation on non-socket 
Plus de sujets relatifs à : socket


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)