Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python发送图像_Python_Image_Sockets - Fatal编程技术网

使用Python发送图像

使用Python发送图像,python,image,sockets,Python,Image,Sockets,我对这个代码有一些问题。。。发送的不是整数图像,而是一些字节,有人可以帮助我吗?我想发送在文件夹中找到的所有图像。多谢各位 客户 服务器 参数to仅指定接收数据包的最大缓冲区大小,并不意味着将读取许多字节 所以如果你写: strng = sc.recv(int(size)) 你不一定会得到所有的内容,特别是如果大小相当大的话 您需要在循环中读取套接字,直到您实际读取了大小字节才能使其正常工作。要在单个套接字上传输文件序列,您需要某种方式来描述每个文件。实际上,您需要在套接字上运行一个小协议,该

我对这个代码有一些问题。。。发送的不是整数图像,而是一些字节,有人可以帮助我吗?我想发送在文件夹中找到的所有图像。多谢各位

客户 服务器 参数to仅指定接收数据包的最大缓冲区大小,并不意味着将读取许多字节

所以如果你写:

strng = sc.recv(int(size))
你不一定会得到所有的内容,特别是如果
大小
相当大的话


您需要在循环中读取套接字,直到您实际读取了
大小
字节才能使其正常工作。

要在单个套接字上传输文件序列,您需要某种方式来描述每个文件。实际上,您需要在套接字上运行一个小协议,该协议允许您知道每个文件的元数据,例如其大小和名称,当然还有图像数据

看起来您正试图这样做,但发送方和接收方必须就协议达成一致

您的发件人中包含以下内容:

s.send(file)                     #send the name of the file
st = os.stat(sb+'\\'+file).st_size  
s.send(str(st))                  #send the size of the file
s.send(l)
接收者如何知道文件名的长度?或者,接收者如何知道文件名的结尾在哪里,以及文件的大小从哪里开始?您可以想象接收者获得一个类似于
foobar.txt8somedata
的字符串,并推断文件名为
foobar.txt
,该文件长8字节,包含数据
somedata

您需要做的是使用某种类型的delimeter(如
\n
)来分隔数据,以指示每段元数据的边界

您可以将数据包结构设想为
\n\n
。然后,来自发射机的示例数据流可能如下所示:

foobar.txt\n8\nsomedata
然后,接收器将对传入流进行解码,在输入中查找
\n
,以确定每个字段的值,如文件名和大小


另一种方法是为文件名和大小分配固定长度的字符串,然后是文件的数据。

那么问题是什么,问题是什么?如何发送和接收图像的实际字节?。因为我想将图像复制到其他文件夹中,但函数os.stat或os.getsize不太好用。代码很简单,但我不明白为什么它不能准确地工作。那么,你有没有尝试过在谷歌上搜索“Python套接字发送文件”?你有没有发现任何错误或任何东西,告诉我们你的实际问题是什么?对不起,我如何做循环?在你的情况下,你可以做类似的事情。或者使用
socket.makefile
将其转换为类似文件的对象,该对象的read方法将阻塞到EOF。此外,只有当文件名的长度正好为5且文件大小为7位时,您的发送方式才有效。。。
s.send(file)                     #send the name of the file
st = os.stat(sb+'\\'+file).st_size  
s.send(str(st))                  #send the size of the file
s.send(l)
foobar.txt\n8\nsomedata