Python套接字和测量收到的字节数

3

大家好,

我有一个简单的Python脚本,向服务发送4个字节的数据并设置1024个接收缓冲区。我试图找出如何测量从服务返回的字节数以放入一些逻辑中。因此,如果响应大于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()

你忘记检查 socket.send 的返回值了。 - Jean-Paul Calderone
1个回答

3

size = len(data)

这里的data是一个作为字符串表示的字节块 - 因此获取字符串的长度将会得到你想要的结果。

然而,你将遇到的问题是,你正在使用TCP,它是一个流 - 不能保证你在recv()方法中只会接收到一个完整的消息。一种简单的解决方法是在你的协议中添加一个size参数,并添加逻辑来重新组装和反序列化消息。


“protocol” 是什么意思? - Kamran Hosseini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接