저는 Python 및 Twisted에 약간의 문제가 있습니다. 나는 서버에 연결하여 메시지를 보내는 클라이언트를 작성하기 시작했다. 서버는 잠시 후에 다시 돌아온다. 이것은 모두 잘되고 좋은 일이지만, 나는 내 프로그램이 '기다리는'길을 필요로한다. (나는 가능한 한 느슨한 용어로 기다린다. 나는 원자로의 주 루프를 막는 차단 작용 때문에 기다릴 수 없다는 것을 안다.) 사용자 입력 용으로 입력하고 서버에 입력 한 내용을 모두 보냅니다. 트위스트 사이트의 stdiodemo 및 stdin 코드 샘플을 살펴 보았지만 여전히 나에게 많은 의미를 부여하지는 않습니다. 표준 입력을 가져 와서 서버로 보내는 방법에 대한 분명한 예를 들어 주면 누구든지 나에게 알릴 수 있습니까?서버에 연결 한 후 주 반응기를 차단하지 않고 사용자 입력을 기다리고 서버에 보내십시오.
편집 : 나의 현재 코드는
from twisted.internet import stdio
from twisted.protocols import basic
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
from twisted.internet.protocol import ClientFactory
from twisted.protocols.basic import LineReceiver
from twisted.internet import stdio
class Echo(basic.LineReceiver):
from os import linesep as delimiter
def connectionMade(self):
self.transport.write('>>> ')
def lineReceived(self, line):
self.sendLine('Echo: ' + line)
self.transport.write('>>> ')
class EchoClientFactory(ClientFactory):
protocol = Echo
def clientConnectionLost(self, connector, reason): #reason why etc etc. Consider 'resume connection' on timer, to deal with willing/forced peers leaving
print "[!] Connection lost "
def clientConnectionFailed(self, connector, reason):
print "[!] Connection failed "
def connect_to(HOST, PORT):
factory = EchoClientFactory()
reactor.connectTCP(HOST, PORT, factory) #connect to $ on port
def main():
stdio.StandardIO(Echo())
host = "192.168.221.134"
port = 8000
reactor.callLater(0, connect_to, HOST=host, PORT=port)
reactor.run()
if __name__ == '__main__':
main()
나는 또한, 서버 측에서, 그것은 전송 '>>>'그 추가해야 stdio를 구현하기 위해 노력하는 데. 또한 이것은 모두 Linux 시스템에서 실행됩니다.
불행히도 예제 코드가 실제로 서버에 무엇을 보내도록 구현되어야하는지는 잘 모르겠습니다. 나는 stdin.py가하는 것과 같은 방식으로 그것을 구현하려고 시도했지만, 터미널에 똑바로 다시 출력하는 것만 같다. – Brewer
코드를 보여주십시오. –
코드가 추가되었습니다. 그것을 붙여 넣는 데 어려움이 있었다면 줄 단위로 처리해야합니다. – Brewer