通过套接字以二进制数据发送图像

0 投票
1 回答
5098 浏览
提问于 2025-04-17 12:42

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

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))

我想把这个服务器改成返回一个二进制图像,而不是原来的消息,并且相应地修改客户端。

有没有人能给我一个例子?

1 个回答

2

如果你有一段包含图片数据的字符串,你可以把原本用来发送消息的 clientsock.send(msg) 替换成 clientsock.sendall(image_data)。这样就可以发送图片数据了。你可以用下面这种方式从文件中读取图片数据:

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

撰写回答