【问题标题】:Send an image through socket as binary data通过套接字将图像作为二进制数据发送
【发布时间】:2012-02-09 17:34:32
【问题描述】:

我有一个多线程回显服务器:

from socket import *
import threading
import thread

def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFSIZ)
        if not data:
            break
        msg = 'echoed:... ' + data
        clientsock.send(msg)
     clientsock.close()

if __name__=='__main__':
    HOST = 'localhost'
    PORT = 21567
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    serversock = socket(AF_INET, SOCK_STREAM)
    serversock.bind(ADDR)
    serversock.listen(2)

    while 1:
        print 'waiting for connection...'
        clientsock, addr = serversock.accept()
        print '...connected from:', addr
        thread.start_new_thread(handler, (clientsock, addr))

我想转换服务器以返回二进制图像而不是原始消息,并相应地修改客户端。

谁能给我举个例子?

【问题讨论】:

  • 这让我想起了15-line python p2p-app,也许你能从中得到一些提示? Here 是带注释的版本。
  • 为什么不直接从磁盘读取图像并“按原样”发送呢?它很可能会正常工作。

标签: python sockets python-3.x


【解决方案1】:

如果您有字符串中的图像数据,您只需将您对clientsock.send(msg) 的调用替换为clientsock.sendall(image_data)。您可以使用以下内容从文件中读取图像数据:

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

【讨论】:

    猜你喜欢
    • 2014-01-01
    • 2017-03-05
    • 2020-09-01
    • 1970-01-01
    • 2012-08-23
    • 2013-08-21
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多