socket.recvfrom_into()TypeError:buffer是只读的

时间:2014-11-19 23:51:14

标签: python

我调用socket.recvfrom_into来获取收到的UDP数据包的大小。第一个参数是buffer类型所必需的。

data = bytearray(2000)       
packet_buf = buffer(data)
nbytes, sender = sd.recvfrom_into(packet_buf, 1500) # sd is a socket.

我收到错误“TypeError:buffer is read-only”。 我搜索了一段时间,找不到python buffer的很多材料。我该如何解决这个问题?还有另一种方法来查询收到的U​​DP数据包的长度吗?

1 个答案:

答案 0 :(得分:2)

使用bytearray directy。

data = bytearray(2000)       
nbytes, sender = sd.recvfrom_into(data, 1500) 

获取数据包大小的简便方法是,

msg, sender = sd.recvfrom(1500)
print len(msg)