使用socket python将图像从客户端发送到服务器
我正在尝试将多个图像从客户端发送到服务器。 我从客户端一次发送一个图像,然后在服务器中获取每个图像的大小,然后将大小发送回客户端,然后尝试将所有图像的所有大小存储在一个表中。 我写了这段代码,但似乎不起作用: client.py:使用socket python将图像从客户端发送到服务器,python,python-2.7,web-services,client,Python,Python 2.7,Web Services,Client,我正在尝试将多个图像从客户端发送到服务器。 我从客户端一次发送一个图像,然后在服务器中获取每个图像的大小,然后将大小发送回客户端,然后尝试将所有图像的所有大小存储在一个表中。 我写了这段代码,但似乎不起作用: client.py: from PIL import Image import glob import sys import pickle import socket import os import numpy reload(sys) def readFileImages(strF
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.connect127.0.0.14000。这将解决当前的问题,如果您还有其他问题,请提出另一个问题。TCP是一个流。您需要某种用于多文件传输的协议。最好使用一些现有的协议,例如HTTP.what if try socket.sendall。如果没有协议,它会工作吗?不,你需要一个协议。使用一些已经在使用HTTP服务器,或者查看它们的源代码。您可以一次读取1024字节的图像并按顺序发送。服务器可以接收每个1024字节的区块,并可以重新创建映像文件。