2011-03-28 14 views
6

के साथ क्लाइंट/सर्वर बनाएं मैं ट्विस्ट का उपयोग कर क्लाइंट/सर्वर बनाने की कोशिश कर रहा हूं। मैं एक डिमन बनाना चाहता हूं, जो क्लाइंट के रूप में किसी अन्य सर्वर से कनेक्ट होगा और अन्य क्लाइंट के लिए सर्वर के रूप में कार्य करेगा।ट्विस्ट

server = sys.argv[1] 
control_port = 8001 

class ControlClient(protocol.Protocol): 
    def makeConnection(self, transport): 
     [some code here -snip-] 
     self.firstOrder(order, transport) 

    def firstOrder(self, action, transport): 
     self.t = transport 
     self.t.write(action + "\0") 

    def sendOrder(self, action): 
     self.t.write(action + "\0") 

    def dataReceived(self, data): 
     [some code here -snip-] 
     [HERE I WANT TO SEND DATA TO CLIENTS CONNECTED TO MY TWISTED SERVER, USING CONTROL SERVER] 

class ControlServer(ControlClient): 
    def dataReceived(self, data): 
     print "client said " + data 

    def makeConnection(self, transport): 
     self.t = transport 
     self.t.write("make connection") 
     print "make connection" 

    def sendData(self, data): 
     self.t.write("data") 

class ClientFactory(protocol.ClientFactory): 
    protocol = ControlClient 

    def clientConnectionFailed(self, connector, reason): 
     print "Connection failed - goodbye!" 
     reactor.stop() 

    def clientConnectionLost(self, connector, reason): 
     print "Connection lost - goodbye!" 
     reactor.stop() 

class ServerFactory(protocol.ServerFactory): 
    protocol = ControlServer 

def main(): 
    c = ClientFactory() 
    reactor.connectTCP(server, control_port, c) 
    s = ServerFactory() 
    reactor.listenTCP(9000, s) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

आप देख सकते हैं, मैं (एक सर्वर के रूप में) को भेजना चाहते हैं कुछ डेटा (एक ग्राहक के रूप में) प्राप्त किया: मैं लिखने कुछ है कि जो मैं अपने समस्या का वर्णन लगता है की तरह है। मेरी समस्या यह है कि मेरे क्लाइंट कंट्रोल में मेरा सर्वर कंट्रोल तत्काल नहीं है, इसलिए मेरे पास क्लाइंट को डेटा भेजने के लिए परिवहन की आवश्यकता नहीं है।

क्षमा करें यदि मैं समझ नहीं हूँ, मैं किसी भी मदद के लिए अग्रिम में अजगर और मुड़ में नया हूँ और अंग्रेजी कोई मेरी मुख्य भाषा :( पूछने के लिए अगर आप कुछ याद आ रही स्वतंत्र महसूस है!

धन्यवाद =)

उत्तर

3

एकमात्र चीज जो आपको याद आ रही है वह यह है कि आप अपने क्लाइंट कनेक्शन की एक सूची रख सकते हैं और उस सूची को उस कोड पर उपलब्ध करा सकते हैं जो सभी ग्राहकों को डेटा भेजने की कोशिश कर रहा है।

मुड़ पूछे जाने वाले प्रश्न में इस का एक उदाहरण है: http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#HowdoImakeinputononeconnectionresultinoutputonanother

उदाहरण केवल एक कारखाना है, लेकिन विचार एक ही है कि। दो कारखानों के साथ अपने मामले को संभालने के लिए, बस एक कारखाना दूसरे के लिए एक संदर्भ दें।

+0

हाय, आपके उत्तर के लिए धन्यवाद मैं इसे आजमाउंगा। ऐसा लगता है कि यह अच्छा समाधान है। – tirlototo

+0

ठीक है, फिर आपकी मदद के लिए धन्यवाद, यह बहुत अच्छा काम करता है! एक अच्छा दिन है =) – tirlototo

+0

आह आप एक मुड़ डेवलपर हैं; =) – tirlototo

संबंधित मुद्दे