Python socket 读取消息问题

今天遇到python socket 读取消息不能读取完全的问题

        size = struct.unpack("!I", socket_obj.recv(4))

        data_size = int(size[0])

        data = socket_obj.recv(data_size)

如此写法并不能完全读取消息内容。原因是scoket recv 是流式读取,不能保证一次读取完成。

需要改写成以下写法。   记录一下



        size = struct.unpack("!I", socket_obj.recv(4))

        data_size = int(size[0])

        #print 'data size = %d' % (data_size)
        data = ''
        recv_size = 0 
        while True:
            buff = socket_obj.recv(1024)
            recv_size += len(buff)
            data += buff
            if  recv_size >= data_size:
                break
        print 'data readed size = %d' % len(data)

你可能感兴趣的:(Python socket 读取消息问题)