所有
我有一个简单的Python脚本,它将4个字节的数据发送到服务并设置1024个recv缓冲区。我试图弄清楚如何测量从服务返回的字节数以放入一些逻辑。因此,如果响应大于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()
答案 0 :(得分:2)
size = len(data)
数据是一个以字符串形式表示的字节块 - 因此获取字符串的长度将为您提供所需的内容。
你遇到的问题是你正在使用TCP这是一个流 - 不能保证你(只)在recv()上得到一个完整的完整消息。一个简单的方法是在协议中添加一个尺寸参数,并添加逻辑以重新组装和放大。反序列化消息。