Twisted
Здравствуйте.
Ещё раз прошу помощи
Со стороны клиента вместо socket.send/recv решил использовать twisted, и наткнулся на засаду:
Никак не могу понять как сделать интерактивный dummy-клиент.
Т.е. жёстко прописаный код подключается, принимает и отправляет данные, и т.д., а вне класса не могу сделать sendMessage()
При чём код
ругается на
File "C:\py\client.py", line 38, in doQuery
x.sendMessage("Hi")
File "C:\py\client.py", line 17, in sendMessage
self.transport.write(data + "\r\n")
AttributeError: 'NoneType' object has no attribute 'write'
Покопался в doc/examples, почитал Writing Clients -- так и не понимаю :(
Может я не с тем классом пытаюсь работать?
Ещё раз прошу помощи
Со стороны клиента вместо socket.send/recv решил использовать twisted, и наткнулся на засаду:
Никак не могу понять как сделать интерактивный dummy-клиент.
Т.е. жёстко прописаный код подключается, принимает и отправляет данные, и т.д., а вне класса не могу сделать sendMessage()
При чём код
# -*- coding: windows-1251 -*-
from twisted.internet.protocol import Protocol, ClientFactory
from sys import stdout
from twisted.internet import reactor
import threading
myhost = 'localhost'
myport = '10101'
class Echo(Protocol):
def dataReceived(self, data):
stdout.write(data)
def sendMessage(self, data):
self.transport.write(data + "\r\n")
def connectionMade(self):
print "It made"
class EchoClientFactory(ClientFactory):
def startedConnecting(self, connector):
print "Started to connect"
def buildProtocol(self, addr):
print "Connected"
return Echo()
def clientConnectionLost(self, connector, reason):
print "Lost connection. Reason: ", reason
def clientConnectionFailed(self, connector, reason):
print "Connection failed. Reaason: ", reason
def doQuery():
x = Echo()
x.sendMessage("Hi")
t = threading.Thread(target = doQuery)
reactor.connectTCP('localhost', 10101, EchoClientFactory())
t.start()
reactor.run()
ругается на
File "C:\py\client.py", line 38, in doQuery
x.sendMessage("Hi")
File "C:\py\client.py", line 17, in sendMessage
self.transport.write(data + "\r\n")
AttributeError: 'NoneType' object has no attribute 'write'
Покопался в doc/examples, почитал Writing Clients -- так и не понимаю :(
Может я не с тем классом пытаюсь работать?
