2010-07-18 30 views

Trả lời

15

Gọi reactor.listenTCPreactor.connectTCP. Bạn có thể có nhiều loại kết nối khác nhau - máy chủ hoặc máy khách - như bạn muốn.

Ví dụ:

from twisted.internet import protocol, reactor 
from twisted.protocols import basic 

class SomeServerProtocol(basic.LineReceiver): 
    def lineReceived(self, line): 
     host, port = line.split() 
     port = int(port) 
     factory = protocol.ClientFactory() 
     factory.protocol = SomeClientProtocol 
     reactor.connectTCP(host, port, factory) 

class SomeClientProtocol(basic.LineReceiver): 
    def connectionMade(self): 
     self.sendLine("Hello!") 
     self.transport.loseConnection() 

def main(): 
    import sys 
    from twisted.python import log 

    log.startLogging(sys.stdout) 
    factory = protocol.ServerFactory() 
    factory.protocol = SomeServerProtocol 
    reactor.listenTCP(12345, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 
+0

um .. Tôi không nhận được nó như thế nào để sử dụng cùng mã ở trên để kết nối trên máy chủ nghe, bạn có thể soi sáng cho tôi xin vui lòng? – Marconi

+0

cũng có, bạn có bất kỳ ý tưởng làm thế nào tôi có thể sử dụng này kết hợp với các tiêu chuẩn? Nói, trong khi máy chủ/khách hàng có thể chấp nhận/kết nối trên nền tôi cũng muốn có thể nhập lệnh. – Marconi

+0

Đoạn mã trên thực hiện kết nối gửi đi. Đó là những gì connectTCP trong lineReceived thực hiện. Điều này khác với những gì bạn muốn? Ngoài ra, để sử dụng nó với stdio, chỉ cần tạo một ví dụ twisted.internet.stdio.StandardIO tại một số điểm. Giống như listenTCP và connectTCP, đó là nguồn sự kiện mà bạn có thể tạo và có cùng tồn tại với bất kỳ nguồn sự kiện nào khác từ Twisted. –

Các vấn đề liên quan