私は Python を初めて使います (ただし、Java でプログラミングを行ってから数年が経ちます)。単純なソケットベースのネットワーク アプリケーションに取り組んでいます (ただの楽しみです)。アイデアは、私のコードがリモート TCP エンドポイントに接続し、サーバーからクライアントにプッシュされるデータをリッスンし、これに対して何らかの解析を実行することです。
サーバー -> クライアントからプッシュされるデータは UTF-8 でエンコードされたテキストであり、各行はCRLF
( \x0D\x0A
) で区切られています。ご想像のとおり、クライアントがサーバーに接続し (ユーザーがキャンセルするまで)、受信した行を読み取って解析するという考え方です。
私はこれを機能させることができましたが、これが正しい方法であるかどうかはわかりません。したがって、私の実際の質問(従うべきコード):
- これは Python で正しい方法ですか (つまり、本当にこれほど簡単ですか)?
- buffers/ に関するヒント/トリック/有用なリソース (参照ドキュメントを除く
asyncore
)
現在、データは次のように読み取られ、バッファリングされています。
def handle_read(self):
self.ibuffer = b""
while True:
self.ibuffer += self.recv(self.buffer_size)
if ByteUtils.ends_with_crlf(self.ibuffer):
self.logger.debug("Got full line including CRLF")
break
else:
self.logger.debug("Buffer not full yet (%s)", self.ibuffer)
self.logger.debug("Filled up the buffer with line")
print(str(self.ibuffer, encoding="UTF-8"))
このByteUtils.ends_with_crlf
関数は、バッファの最後の 2 バイトをチェックするだけです\x0D\x0A
。最初の質問が主な質問です (回答はこれに基づいています) が、他のアイデアやヒントは大歓迎です。ありがとう。