我做了一些插座IO,并使用ByteArray对象作为缓冲。 我想接收与数据偏移量,使用如以避免创建中介字符串对象如下所示csock.recv_into这个缓冲器。 不幸的是,它似乎的ByteArray不能用这种方式,和下面的代码无法正常工作。
buf = bytearray(b" " * toread)
read = 0
while(toread):
nbytes = csock.recv_into(buf[read:],toread)
toread -= nbytes
read += nbytes
所以不是我使用下面的代码,它不使用临时字符串(和作品)...
buf = bytearray(b" " * toread)
read = 0
while(toread):
tmp = csock.recv(toread)
nbytes = len(tmp)
buf[read:] = tmp
toread -= nbytes
read += nbytes
有没有更优雅的方式来做到这一点并不需要大约抄袭中间串?