Hi Avec Twisted , Ce que j'ai oublie de dire est que dans la plus part des implémentations de client de protocoles, la transmission se fait line by line avec des indicateurs de fin de messages qui différent suivant le protocole en question , POP3 par exemple en est un exemple , d'autres implémentations de ce genre basées sur twistedMatrix peuvent egalement etre vu ici .Et pour moi cela donne plus de lisibilité dans le traitement des données reçues. https://github.com/asterisk Une implémentation de simulation est ici pour voir le fonctionnement https://github.com/aliounedia/myQtSoft/tree/master/myTwistedDifferedCollect --Ad
Le 22 janvier 2013 23:09, Alioune Dia <[email protected]> a écrit : > Hi > > >> - en réseau,système regarde vers python-twisted >> >> >> Ha, ca c'est genial , mais le reste Paaaaa:) . Twisted c'est vraiment >> l'outil de référence pour programmer en resau /TPC/VOIP,udp .Tous les >> protocoles peuvent être écrit avec un minimum de code possible .les >> `Deferreds` [1] .permettent un gestion asyncrone de tout ce qui se >> passe . Il y 'a une gestion très rigoureuse de l'agencement descallbacks >> > les uns sont chaines sur les autres et la gestion de ce qu'il faut >> exécuter >> quand il faut l' exécuter est géré par Twister. Tu peux interfacer >> presque >> tout les protocoles. Ca c'est vraiment l'outil qu'il te faut. >> >> Un exemple >> https://github.com/aliounedia/myQtSoft/tree/master/myTwisted >> http://twistedmatrix.com/documents/11.0.0/core/howto/defer.html >> >> # creer un serveur de test en 5 lignes /TCP/UDP ... >> >> from twisted.internet import protocol, reactor >> >> class BasicServer(protocol.Protocol): >> def dataReceived(self, data): >> self.transport.write('server_response:'+ data) >> self.transport.loseConnection() >> >> class BasicServerFactory(protocol.Factory): >> def buildProtocol(self, addr): >> return BasicServer() >> >> reactor.listenTCP(1234, BasicServerFactory()) >> reactor.run() >> >> >> # creer un client : >> >> # Ce fichier ne sert a rein d'autre qu'a rendre >> # ce dossier un module . >> from twisted.internet import reactor ,defer >> from twisted.protocols import basic >> from twisted.internet.protocol import ClientCreator >> from sys import stdout >> import time >> class Manager(basic.LineOnlyReceiver): >> >> def __init__(self): >> self.ids = {} >> >> def dataReceived(self, data): >> self.dispatch_incomming(data) >> >> def connectionMade(self): >> #self.test_send() >> #wait simulation >> time.sleep(5) >> self.call_with_key_test() >> >> def test_send(self,message): >> self.transport.write(message) >> >> def call_with_key_test(self , key =None, message =None): >> >> df = defer.Deferred() >> if not key or not message: >> message ='test_key:test_val' >> else : message ='%s:%s'%(key, message) >> >> >> if key in self.ids: >> del self.ids[key] >> >> self.ids['test_key'] =df.callback >> self.test_send(message) >> >> >> # test all methods >> df.addCallbacks(self.process_done) >> >> >> def process_done(self, *args): >> print 'process_done' >> print args >> try: >> del self.ids['test_key'] >> except : >> pass >> >> def dispatch_incomming(self, data): >> key = data.split(':')[1] >> df_callback =self.ids.get(key, None) >> df_callback(data) >> >> >> >> creator = ClientCreator(reactor, Manager) >> d = creator.connectTCP("localhost", 1234) >> reactor.run() >> --Ad >> >
-- Ce message a été envoyé à la liste [email protected] Gestion de votre abonnement : http://dakarlug.org/liste Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug Le site du DakarLUG : http://dakarlug.org
