【发布时间】:2013-08-29 20:41:30
【问题描述】:
我制作了这个基本客户端来适应异步。
import asyncore, socket
class TestClient(asyncore.dispatcher):
def __init__(self, host, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host, port))
self.buffer = "madonna"
def handle_connect(self):
pass
def handle_close(self):
print "Close"
self.close()
def handle_read(self):
print self.recv(8192)
def writable(self):
print "Calling writable"
return (len(self.buffer) > 0)
def handle_write(self):
print "Write"
sent = self.send(self.buffer)
self.buffer = self.buffer[sent:]
client = TestClient("127.0.0.1", 7899)
asyncore.loop()
我认为我做的不对。我可以连接到服务器,但它不发送任何数据。因为buffer不为空,不应该调用Writable来检查缓冲区,如果不为空,调用handle_write?
除了__init__ 方法之外,什么都没有被调用。
【问题讨论】:
-
会不会是一个简单的缩进问题?你所有的方法都在
__init__范围内。 -
我怎么会错过呢?您可以将此作为答案,以便我接受。
-
完成。很高兴能帮上忙:)