- 论坛徽章:
- 0
|
恩我也看到了,我刚刚试着写了一个这个:
- import array
- class Buffer :
- def __init__( self, len ) :
- self.__array= array.array( 'c', '\0'*len )
- self.__databegin= 0
- self.__datalen= 0
- def getFreespace( self, minlen ) :
- rightSpace= self.__getRightSpace()
- if rightSpace < minlen :
- totalSpace= self.__databegin + rightSpace
- if totalSpace < minlen :
- dlen= minlen - totalSpace
- self.__array.extend( '\0'*dlen )
- self.__array[ 0:self.__datalen ]= self.__array[ self.__databegin:self.__datalen+self.__databegin ]
- return buffer( self.__array, self.__databegin + self.__datalen, self.__getRightSpace() )
- def pushDataLen( self, len ) :
- self.__datalen += len
- def getDataSpace( self ) :
- return buffer( self.__array, self.__databegin, self.__datalen )
- def popDataLen( self, len ) :
- len= min( len, self.__datalen )
- self.__databegin += len
- self.__datalen -= len
- if self.__datalen == 0 :
- self.__databegin= 0
- def __getRightSpace( self ) :
- return len( self.__array ) - self.__databegin - self.__datalen
复制代码 但是发现……原来buffer竟然是只读的……
我知道socket.recv_into可以传入一个array,但是由于不能指定数据从哪个位置开始写入,所以我怀疑每次都是从头部开始,而如果这个array里还有之前的剩余数据,那么这些剩余数据就会被覆盖了……
 |
|