如何解决从服务器错误地拆封邮件蟒蛇插座
我想打包一些信息并将其从服务器发送到客户端。然后,客户端必须正确解压缩邮件。 服务器发送传感器的类型(字符串),通道名称(字符串)和照片(字节)。 我做的。我使用频道的长度和照片的长度,因为它们的大小可以更改。
msg = struct.pack('>3sHI',sensor,len(channel),len(photo)) + channel + photo
对于克莱恩,我有。
def recv_packets(connection,n):
piece = b''
while len(piece) < n:
packet = connection.recv(n - len(piece))
if not packet:
return None
piece += packet
return piece
def my_recv(connection):
sensor = recv_packets(connection,3)
if not sensor:
print("not sensor")
return None
sensor_type = struct.unpack('>3s',sensor)[0]
length_of_channel_name = recv_packets(connection,2)
if not length_of_channel_name:
print("not length of channel name")
# return None
else:
channel_len = struct.unpack('>H',length_of_channel_name)[0]
# here we must get channel name "ChannelFirst",but we also got ff at start.
# ("ffChannelFirst")
# it isn't right
channel_name = recv_packets(connection,channel_len + len(sensor) + 1)
print(channel_name.decode('utf-8'))
#the same code for photo
return photo,channel_name,sensor_type
如您所见,我可以获得正确的频道名称。 (我总是从ff开始)。那我就不能正确地拍照。而且我不明白怎么了。请帮帮我。
解决方法
此字符串不起作用。
msg = struct.pack('>3sHI',sensor,len(channel),len(photo)) + channel + photo
我这样做了。现在一切都好。
msg = struct.pack('>3sH',len(channel)) + channel
msg += struct.pack('>I',len(photo)) + photo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。