chat_server_twisted.py
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
class MultiClientEcho(Protocol):
def __init__(self, factory):
self.factory = factory
def connectionMade(self):
self.factory.clients.append(self)
def dataReceived(self,data):
for client in self.factory.clients:
client.transport.write(data)
def connectionLost(self,reason):
self.factory.clients.remove(self)
class MultiClientEchoFactory(Factory):
def __init__(self):
self.clients = []
def buildProtocol(self, addr):
return MultiClientEcho(self)
reactor.listenTCP(8000, MultiClientEchoFactory())
reactor.run()
chat_client_twisted.py
from twisted.internet import stdio, reactor, protocol
from twisted.protocols import basic
import re,sys
class DataForwardingProtocol(protocol.Protocol):
def __init__(self):
self.output = None
def dataReceived(self,data):
if self.output:
self.output.write(data)
class StdioProxyProtocol(DataForwardingProtocol):
def connectionMade(self):
inputForwarder = DataForwardingProtocol()
inputForwarder.output = self.transport
stdioWrapper = stdio.StandardIO(inputForwarder)
self.output = stdioWrapper
print "Connected to server"
class StdioProxyFactory(protocol.ClientFactory):
protocol = StdioProxyProtocol
def main():
reactor.connectTCP("127.0.0.1",8000,StdioProxyFactory( ))
reactor.run()
if __name__ == '__main__':
main()
|