3

全て、

4バイトのデータをサービスに送信して1024recvバッファーを設定する単純なPythonスクリプトがあります。サービスから返されたバイト数を測定してロジックを組み込む方法を理解しようとしています。したがって、応答が10バイトより大きい場合はXを実行し、そうでない場合はYを実行します。応答をバイト単位で測定する方法がわかりません。ポインタをいただければ幸いです。

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
address = ("10.0.0.1", 5000)
s.connect(address)
s.send('1234')
data = socket.recv(1024)
s.close()
4

1 に答える 1

3

size = len(data)

データは文字列として表されるバイトのブロックです。したがって、文字列の長さを取得すると、必要なものが得られます。

ただし、発生する問題は、ストリームであるTCPを使用していることです。recv()で完全なメッセージを1つだけ(のみ)取得する保証はありません。これを回避する簡単な方法は、プロトコルにサイズパラメータを追加し、メッセージを再アセンブルおよび逆シリアル化するロジックを追加することです。

于 2013-01-29T20:27:59.517 に答える