0

我想用 python 3 的 socketserver 发送图像,但我遇到了编码问题。我需要以字节还是文本形式发送?我是否需要使用“b”选项打开我的图像并将其转换为特定格式?

使用以前版本的 python 我可以这样做:

image = open('my_image.jpg', 'rb')
image_data = image.read()
image.close()

socketData = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketData.connect((ADDRESS,PORT))

socketData.sendall(image_data)

但是对于 python 3,它不再起作用了。存在编码和编解码器问题,我不太了解 encode()、decode() 或 str() 的使用。

你知道我该如何实现它吗?

谢谢

4

1 回答 1

0

就像我上面写的那样,您的代码目前按原样工作。要向要通过套接字发送的数据添加标头,首先需要知道其编码。假设它是 UTF-8,您可以执行以下操作:

header = "Header!\n"
header_bytes = bytes(header, 'utf-8')
socketData.sendall(header_bytes + image_data)

bytestype 只能bytes在 Python 3 中连接。

于 2013-01-10T13:47:56.227 回答