3

全部,

我有一个简单的 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()
4

1 回答 1

3

size = len(data)

data 是表示为字符串的字节块 - 因此获取字符串的长度将为您提供所需的内容。

但是您会遇到的问题是您使用的是流式 TCP - 不能保证您会(仅)在 recv() 上获得一个完整的完整消息。一个简单的解决方法是在你的协议中添加一个大小参数,并添加逻辑来重新组装和反序列化消息。

于 2013-01-29T20:27:59.517 回答