我在编写一个程序来使用Python通过网络发送文件夹的内容时遇到了一个问题。这里有很多例子,我发现的所有例子都假设接收方知道他想要接收的文件的名称。我尝试做的程序假设接收方同意接收文件,并且不需要从服务器请求文件名。一旦服务器和客户机之间建立了连接,服务器就开始将特定文件夹中的所有文件发送给客户机。下面是一张图片以显示更多说明:example here
以下是一些做客户机-服务器的程序,但是它们发送一个文件,并且假设接收方知道文件名,所以客户机应该通过文件名来请求一个文件,以便接收它。
注:我为英语语法错误道歉。
以下是我发现的最好的例子:
服务器端:import sys
import socket
import os
workingdir = "/home/SomeFilesFolder"
host = ''
skServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
skServer.bind((host, 1000))
skServer.listen(10)
print "Server Active"
bFileFound = 0
while True:
Content, Address = skServer.accept()
print Address
sFileName = Content.recv(1024)
for file in os.listdir(workingdir):
if file == sFileName:
bFileFound = 1
break
if bFileFound == 0:
print sFileName + " Not Found On Server"
else:
print sFileName + " File Found"
fUploadFile = open("files/" + sFileName, "rb")
sRead = fUploadFile.read(1024)
while sRead:
Content.send(sRead)
sRead = fUploadFile.read(1024)
print "Sending Completed"
break
Content.close()
skServer.close()
客户端:
^{pr2}$
如果有办法从客户端消除此语句:sFileName = raw_input("Enter Filename to download from server : ")
并使服务器端无需等待客户端选择文件就可以逐个发送所有文件。在