Hi all,
I'm trying to make a simple TCP server using Twisted ,which can do some interaction between diffirent client connections.The main code is as below:
#!/usr/bin/env python
from twisted.internet import protocol, reactor
from time import ctime
#global variables
PORT = 22334
connlist = {}    #store all the connections
ids = {}    #map the from-to relationships
class TSServerProtocol(protocol.Protocol):
    def dataReceived(self, data):
        from_id,to_id = data.split('|') #get the IDs from standard client input,which looks like "from_id|to_id"
        if self.haveConn(from_id):    #try to store new connections' informations
            pass
        else:
            self.setConn(from_id)
            self.setIds(from_id,to_id) 
        if to_id in self.csids.keys():                 
             self.connlist[to_id].transport.write(\
             "you get a message now!from %s \n" % from_id)    #if the to_id target found,push him a message.doesn't work as expected
    def setConn(self,sid):
        connlist[sid] = self
    #some other functions
factory = protocol.Factory()
factory.protocol = TSServerProtocol
print 'waiting from connetction...'
reactor.listenTCP(PORT, factory)
reactor.run()
As the comments mentioned,if a new client connection comes,I'll store its connection handle in  a global varaible connlist which is like 
connlist = {a_from_id:a_conObj,b_from_id:b_conObj,....}
and also parse the input then map its from-to information in ids.Then I check whether there's a key in the ids matches current "to_id".if does,get the connection handle using connlist[to_id] and push a message to the target connection.But it doesn't work.The message only shows in a same connection.Hope someone can show me some directions about this.
Thanks!