LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 脚本编程 >

Python twisted 聊天室

时间:2013-08-02 15:38来源:未知 编辑:linuxeye 点击:
chat_server_twisted.py from twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorclass MultiClientEcho(Protocol): def __init__(self, factory): self.factory = factory def connectionMade(self): self.factory.cl
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()
------分隔线----------------------------
标签:PythonTwisted聊天室
栏目列表
推荐内容