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
>

Attachment: server.py
Description: Binary data

Attachment: __init__.py
Description: Binary data

Attachment: client.py
Description: Binary data

--
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

Répondre à