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

Réseau/Web Python Discussion :

Problème déconnection socket


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème déconnection socket
    Bonjour, voila j'ai fait une application permettant de discuter vocalement sur internet, mais lorsqu'il y a qu'un client sur le serveur et que celui-ci part le serveur ce coupe.A cause de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgClient = self.connexion.recv(1024)
    Ce qui est normal car il ne reçoi plus rien le client étant plus la.
    Olors voila j'aurai voulu savoir comment empecher que le serveur plante et continu a attendre les connection meme si plus personne est dessus?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    # -*- coding: utf-8 -*- 
     
    HOST =  '127.0.0.1 '
    PORT = 40000
     
    import socket, sys, threading
     
    class ThreadClient(threading.Thread):
        def __init__(self, conn):
            threading.Thread.__init__(self)
            self.connexion = conn
     
        def run(self):
            nom = self.getName() 
            while 1:
                msgClient = self.connexion.recv(1024)
                if msgClient.upper() ==  "FIN " or msgClient == " ":
                    break
                message =  "%s> %s " % (nom, msgClient)
                print message
                for cle in conn_client:
                    if cle != nom:
                        conn_client[cle].send(message)
            del conn_client[nom]
            chaine =conn_client[nom] 
            fichier = open("log.txt","r")
            for ligne in fichier:
                if chaine in ligne:
                    ligne2=fichier.readline(ligne)
                    contenu=contenu.replace(ligne2, '')
            fichier.close()
            print  "Client %s déconnecté. " % nom
     
     
    mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        mySocket.bind((HOST, PORT))
    except socket.error:
        print  "La liaison du socket à l 'adresse choisie a échoué. "
        sys.exit()
    print  "Serveur prêt, en attente de requêtes ... "
    mySocket.listen(5)
     
    conn_client = {} 
    while 1:
        connexion, adresse = mySocket.accept()
        th = ThreadClient(connexion)
        th.start()
        it = th.getName() # identifiant du thread
        conn_client[it] = connexion
        az=""+ it +"\n"
        print  "Client %s connecté, adresse IP %s, port %s. " %\
        (it, adresse[0], adresse[1])
        file=open('log.txt','a')
        file.write(az)
        file.close()
     
        connexion.send( "Vous êtes connecté. Envoyez vos messages. ")

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    3 choses :

    1: tu veux te faire aider mais tu ne relis même pas ton post... on ne devrait pas avoir a se forcer pour lire ton post donc je ne l'ai pas lu dans le details

    2: pour de la comunication vocal il ne faut pas tout faire dans le même socket : en général on a un protocol de "commandes" (du style "je commence a t'appeller", "je racroche") sur un port et le transport de la voix sur un autre port et en fonction des comandes tu ouvre ou ferme le port de voix

    3: un standard existe (enfin un parmis d autres) c le protocol SIP pour les commandes et du rdp pour la voix tu peux utiliser un framework python pour les utiliser ou bien recoder dss protocols dans le même esprit.

Discussions similaires

  1. Problème de sockets
    Par the_penguin dans le forum Réseau
    Réponses: 8
    Dernier message: 13/04/2006, 19h19
  2. Problême de Socket avec un applet java (RMI/policy)
    Par Vesperal dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/04/2006, 12h00
  3. Réponses: 2
    Dernier message: 26/03/2004, 09h15
  4. [Kylix] Problème de socket
    Par RaygKross dans le forum EDI
    Réponses: 1
    Dernier message: 01/03/2004, 19h41
  5. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28

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