使用套接字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))。这将解决当前问题,如果您还有其他问题,请提出另一个问题。

我有相同的错误,我更改了"端口号"。它工作正常

相关内容

  • 没有找到相关文章

最新更新