IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Mort du proccessus d'un client


Sujet :

Administration système

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut Mort du proccessus d'un client
    Bonjour,
    Je dois realiser un logiciel de chat client sever. le server de ce projet doit etre capable de gerer pluiseurs clients.
    La comunication entre le clilent est le server s'effectue en TCP/IP.
    Le projet est coder en C.
    Comment je peus faire pour que le server sache que le processuce d'un client est mort, par un ctrl+c ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Deux solution :

    1/ Mettre un signal handler dans le programme client. Lorsqu'il detecte le signal tu envoie un message particulier au serveur avant de quitter.

    2/ Normalement si ton programme se quitte, la socket utilisée va se retrouvée fermée. Tu devrais donc avoir dans ton prog serveur, des erreurs lors de la lecture ou de l'envoie de message sur cet socket. Il te suffit de les gérer !

    ++
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Pour la premiere solution j'y avais pencer mais si le programme ne repond plus et que j'ai mis un handler sur le signal, es que le system vas quand meme tuer le pross ?
    Ou es que je dois appeler la flonction pour tuer mon pross ?

    Quant a la deuxieme solution j'utliste un select cote serveur pour gerer tous les clients. Si un client est kille ca dis a non select qu'il y a quelque chose a lire, en fait ca fait comme une boucle sans fin.

  4. #4
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Si le programme ne répond plus, c'est qu'il est buggé : tu ne devrais pas écrire des programmes buggés .

    Lorsqu'un client se deconnecte, select renvoie que le client a quelquechose a dire et recv renvoie 0 ( c'est le seul cas ou recv renvoie 0 ). Dans ce cas, tu sais que le clietn est deconnecté. Tu peux aussi t'en apercevoir sur un send ( retour -1 et errno = ECONNRESET).

    Il est tout de fois élégant de prévoir un moyen propre dans le protocole afin d'indiquer au serveur la deconnection d'un client ( lorsque le dit client a fini sa tâche ). Cette routine peut alors être appellé par tous les signal handler du monde si ca te chante.

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Enfait il fallait juste verifier les valeur retour de recv ou read et de fermer la slcket et faire un .FD_CLR pour le select.
    Merci et bonne journee a tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40
  2. Serveur Linux avec clients Windows
    Par ostaquet dans le forum Installation
    Réponses: 2
    Dernier message: 01/08/2002, 15h40
  3. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46
  4. Client C pour CORBA
    Par rv dans le forum CORBA
    Réponses: 3
    Dernier message: 06/05/2002, 11h35
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo