0

この基本的なクライアントは、非同期コアに対応するために作成しました。

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__メソッド以外には、何も呼び出されません。

4

1 に答える 1