【发布时间】:2018-07-18 09:41:07
【问题描述】:
我需要使用 TCP Protocol 和 Python 的 socket 模块通过特定长度的“包”(比如 40 个字节)发送一个数组。
首先我生成ints的样本数组:
int_array = [i**2 for i in range(1, 100)]
然后我将其转换为bytes 对象:
encoded_array = str(int_array).encode()
要检查 encoded_array 对象的长度,我使用的是 len(encoded_array),在这种特殊情况下等于 551 个字节。
假设我要发送 40 个字节长的包:这会产生完整的 13 个包和 encoded_array 的最后一个字节的剩余部分,总共 14 个包。但我无法弄清楚如何将bytes 对象按字节数本身划分为更小的bytes 对象。有谁知道如何做到这一点?
我也知道我可能以完全错误的方式进行操作,所以请告诉我如何通过TCP 协议发送“部分”数据。也许根本不需要进行这种拆分?
【问题讨论】:
-
“sockets”还是“socket”模块?
-
structmodule 对这个有用吗? -
@MustacheMoses 是的,感谢您的注意,它是“套接字”
-
"sys.getsizeof" 不检查字节的长度,它检查字节对象的大小。如果你想要长度,你需要
len(byte_object) -
@juanpa.arrivillaga 你是对的,我在描述中做了修正
标签: python python-3.x sockets tcp