2012-02-09 121 views
0

我有一個多線程的回聲服務器:通過socket發送的圖像作爲二進制數據

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

我想在服務器轉換爲返回一個二進制圖像,而不是原始消息,並相應修改客戶端。

有人可以指點我一個例子嗎?

+0

這讓我想起了[15行python p2p-app](http://python.about.com/b /2007/09/18/the-worlds-tiniest-p2p-program.htm),也許你可以從中得到一些提示? [Here](http://www.exonsoft.com/~kochin/TinyP2P/tinyp2p.html)是一個註釋版本。 – 2012-02-09 17:39:52

+0

爲什麼不從磁盤讀取圖像並按「原樣」發送?它很可能會工作得很好。 – 2012-02-09 17:40:13

回答

2

如果您的圖像數據是字符串,您可以用clientsock.sendall(image_data)替換您的電話clientsock.send(msg)。您可以使用以下內容從文件中讀取圖像數據:

image = open('my_image.jpg', 'rb') 
image_data = image.read() 
image.close() 
相關問題