簡體   English   中英

使用套接字python從客戶端向服務器發送圖像

[英]sending images from client to server using socket python

我正在嘗試從客戶端向服務器發送多個圖像。 從我的客戶端一次發送一個圖像,然后為每個圖像獲取服務器中的大小,然后將大小發送回客戶端,然后嘗試將所有圖像的所有大小存儲在一個表中。 我寫了這段代碼,它似乎不起作用:

client.py:

from PIL import Image
import glob
import sys
import pickle
import socket 
import os
import numpy

reload(sys)

def readFileImages(strFolderName):
    st = os.path.join(strFolderName, "*.png")
    print st
    return glob.glob(st)



client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
client_socket.bind(("127.0.0.1", 4000))

list1=readFileImages("test")
myoutput =[]
while (list1):
  for im in list1:

     f=open(im,"rb")

     while True:

          veri = f.read()

          if not veri:

                break

          client_socket.send(veri)


     f.close()

  data = client_socket.recv(4096)
  data_arr=pickle.loads(data)

  newrow=numpy.asarray(data_arr)
  myoutput=numpy.vstack([myoutput,newrow])

client_socket.close()



numpy.savetxt("testTable.csv",myoutput,delimiter=",")

server.py:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1);
s.bind(("127.0.0.1",4000))
s.listen(5)

client_socket, address = s.accept()

print "Connected to - ",address,"\n"



fname="test.png"

fp = open(fname,'wb')

 # image
 while True:
    strng = client_socket.recv(1024)
    if not strng:
        break
    fp.write(strng)

 fp.close()



 #T[0]=detect_carte_grise(fp)
 im = Image.open(fp)

 T= im.size #width,height
 data=pickle.dumps(T)
 client_socket.send(data)

為何出現此錯誤?:[errno98]地址已在使用中,我什至無法連接到服務器

首先,在服務器代碼中綁定到端口,但是在客戶端代碼中,需要連接到該服務器。 您正在綁定兩個腳本,並且第一個正在運行的腳本已使用該地址。 因此在客戶端拖放綁定並更改為client_socket.connect(("127.0.0.1", 4000)) 這樣可以解決當前的問題,如果還有其他問題,請提出另一個問題。

我遇到了同樣的錯誤,我更改了“端口號”。 很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM