我想只做一個簡單的asyncore例子,其中一個套接字是發送者,一個是接收者。出於某種原因,接收器上的handle_read()永遠不會被調用,所以我從來沒有得到'測試'數據。有人知道爲什麼這是我在asyncore上的第一個鏡頭,所以它可能非常簡單。asyncore沒有運行handle_read
import asyncore, socket, pdb, random
class Sender(asyncore.dispatcher):
def __init__(self):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
def handle_connect(self):
print ('first connect')
def writable(self):
True
def readable(self):
return False
def handle_write(self):
pass
def handle_close(self):
self.close()
class Receiver(asyncore.dispatcher):
def __init__(self):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
def handle_connect(self):
print ('first connect')
def readable(self):
return True
def handle_read(self):
print 'reading'
def handle_write(self):
print 'write'
def handle_accept(self):
self.conn_sock, addr = self.accept()
print 'accepted'
def handle_close(self):
self.close()
a = Sender()
b = Receiver()
addr = ('localhost', 12344)
b.bind(addr)
b.listen(1)
a.connect(addr)
asyncore.loop()
a.send('test')
好吧,我已經添加了發送命令到發件人的handle_write函數: handle_write(self): self.send('test') 不應該在循環中運行嗎?什麼都沒發生。 – victor 2009-10-17 16:23:02
您希望觸發'handle_write()'的操作是什麼?否則'send()'永遠不會被調用。 – 2009-10-17 16:45:43
@victor,編輯我的答案以提供更多信息。 – 2009-10-17 16:59:17