p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 296
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 296
    Points : 699
    Points
    699

    Par défaut Comment puis arreter mon listner proprement

    Bonjour à tous,

    J'ai ce code ui va ecouter les entrée sur le port 81.
    Quand il y a une valeur, soit il l'enregistre dans une base de donnée soit il retourne un petit message.

    J'aimerais que lorsqu'il il recoit le message, il arrete d'écouter le port 81 et rendre le prompt a l'utilisateur, sans message d'erruer.

    J'ai essyaé avec import sys, sys.exit(), mais j'ai un peté de message sans avoir le prompt.
    Que me recommanderiez-vous ?

    Voici mon code
    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
     
    from twisted.internet.protocol import Factory, Protocol
    from twisted.internet import reactor
     
    import time
    import _mysql
    import pprint
    import sys
     
    class SendContent(Protocol):
            def connectionMade(self):
                    print 'Accepted connection'
            def dataReceived(self, data):
                    if data.strip() == "bye":
                            print 'Bye';
                    elif data.strip() == "quit":
                            print "quit"
                            sys.exit()
                            print "quit" #ceci n'est pas affiché
                    else:
                            date = time.time()
                            values = data.split(',');
                            if len(values) != 4:
                                    print 'Error: Data must have 4 arguments separated with coma'
                            else:
                                    db = None;
                                    try:
                                            db = _mysql.connect('localhost', 'username','password','db')
                                            db.query("INSERT INTO tracker (date, speed, lat, lng, course)" + "VALUES ('" + str(date) + "', '" + str(values[0]) + "', '" + str(values[1]) + "', '" + str(values[2]) + "', '" + str(values[3]) + "')")
     
                                            print "---------------------"
                                            print "| Data Logged       |"
                                            print "---------------------"
                                            print "Speed: " + values[0]
                                            print "Latitude: " + values[1]
                                            print "Longitude: " + values[2]
                                            print "Course: " + values[3]
                                    except _mysql.Error, e:
                                            print "Error %d: %s" % (e.args[0], e.args[1])
                                    finally:
                                            if db:
                                                    db.close()
     
    class SendContentFactory(Factory):
            protocol = SendContent
     
    reactor.listenTCP(81, SendContentFactory())
    reactor.run()
    et voici le message que je recoit a cause de exit.quit()
    Unhandled Error
    Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
    --- <exception caught here> ---
    File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 626, in _doReadOrWrite
    why = selectable.doRead()
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 203, in doRead
    return self._dataReceived(data)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 209, in _dataReceived
    rval = self.protocol.dataReceived(data)
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 296
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 296
    Points : 699
    Points
    699

    Par défaut

    Ben voilà, c'était pas si compliqué

    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

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

Discussions similaires

  1. [PHP 5.3] Comment puis modifier le dernier element de mon tableau seulement
    Par pierrot10 dans le forum Syntaxe
    Réponses: 1
    Dernier message: 08/03/2010, 00h03
  2. Réponses: 2
    Dernier message: 28/12/2009, 23h35
  3. Comment puis je connaitre les visiteur de mon site
    Par pierrot10 dans le forum Syntaxe
    Réponses: 2
    Dernier message: 02/12/2007, 14h48
  4. CSS: Comment puis-je aligner mon texte au millieux
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 16/02/2006, 09h01
  5. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19

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