Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Python3套接字无法发送大文件,而循环会无缘无故跳出_Python_Sockets_File Upload_Network Programming_Serversocket - Fatal编程技术网

Python3套接字无法发送大文件,而循环会无缘无故跳出

Python3套接字无法发送大文件,而循环会无缘无故跳出,python,sockets,file-upload,network-programming,serversocket,Python,Sockets,File Upload,Network Programming,Serversocket,这是一个发送文件的函数,其参数为filename和socket。 在发送文件之前,它将生成一个zip文件,该文件在发送后将被删除 发送小文件(数十kb)时,情况正常,如下所示。退出while循环时,条件被判断为false 正常情况: 但当发送超过2MB的文件时,会出现错误: 文件尚未发送,且条件仍然为真,循环将跳出 错误情况: 此外,以下两行代码没有执行 打印(“总共发送了%s个字节" % 发送(单位尺寸) 打印(“发送:文件发送成功") 为什么循环在条件仍然为真时突然结束?因此,稍大的文

这是一个发送文件的函数,其参数为filename和socket。 在发送文件之前,它将生成一个zip文件,该文件在发送后将被删除

发送小文件(数十kb)时,情况正常,如下所示。退出while循环时,条件被判断为false

正常情况:

但当发送超过2MB的文件时,会出现错误: 文件尚未发送,且条件仍然为真,循环将跳出

错误情况:

此外,以下两行代码没有执行

打印(“总共发送了%s个字节" % 发送(单位尺寸)
打印(“发送:文件发送成功")
为什么循环在条件仍然为真时突然结束?因此,稍大的文件根本无法传输

源代码:

def文件_发送(self,conn,filename):
true\u name=文件名
filepath=self.host\u path\u列表[文件名]
#filepath是一个URL
如果filename.find('.')!=-1:
filename=filename[0:filename.find('.')]+.zip
其他:
filename=filename+“.zip”
z=zipfile.zipfile(文件名“w”)
如果os.path.isdir(文件路径):
#如果是子文件夹,请压缩filename.zip中的所有内容
对于os.listdir(文件路径)中的d:
z、 写入(文件路径+os.sep+d,d)
其他:
#它是一个单独的文件
z、 写入(文件路径,真实名称)
z、 关闭()
标题_dic={
“文件名”:文件名,
“文件大小”:z.infolist()[0]。文件大小
}
header\u json=json.dumps(header\u dic)
header\u bytes=header\u json.encode('utf-8')
conn.send(结构包('i',len(头字节)))
#发送头
conn.send(头字节)
总大小=z.infolist()[0]。文件大小
#发送方数据
将open(文件名为“rb+”)作为f:
发送大小=0

发送大小时,您忽略流的结尾。您的循环条件应该是
您忽略流的结尾。您的循环条件应该是