1つのソケットが送信者で、もう1つが受信者である単純な非同期の例を作成しようとしています。何らかの理由で、レシーバーの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')