我需要编写一个服务器和一个客户端来做 4 件事 1.发送消息被接收的时间 2.获取文件夹中的所有文件 3.从该文件夹中复制一个文件并在另一个文件夹中创建一个新文件(txt) 4.关闭程序
克林特:
import socket
import os
import pickle
s=socket.socket()
addr=('127.0.0.1',8200)
s.connect(addr)
choice="0"
while choice!="4":
print s.recv(4068)
choice=raw_input("please choose a service number:")
s.send(choice)
if choice=="3":
fileName=raw_input("please enter the name of the file you want to download:")
s.send(fileName)
data2= s.recv(4068)
if choice=="1":
print data2
elif choice=="2":
data_arr=pickle.loads(data2)
print data_arr
elif choice=="3":
text=s.recv(4068)
if text=="no file with this name":
print text
else:
newFile=open("newFile.txt","w")
newFile.write(text)
newFile.close()
print "thanks for using our conection"
s.close()
服务器:
import socket
import time
import os
import pickle
def main():
path="C:\hello"
s=socket.socket()
addr=('127.0.0.1',8200)
s.bind(addr)
s.listen(5)
s2,addr2=s.accept()
choice="0"
while choice!="4":
s2.send("1.Get the time of the message\r\n2.Get list of files\r\n3.Download file\r\n4.Close")
choice= s2.recv(4068)
if choice=="1":
s2.send(time.strftime("%H:%M:%S"))
if choice=="2":
dirs=os.listdir(path)
data_string = pickle.dumps(dirs)
s2.send(data_string)
if choice=="3":
fileName=s2.recv(4068)
os.chdir(path)
dirs=os.listdir(path)
for file in dirs:
if fileName in dirs:
f=open(fileName,'r')
text=f.read()
**s2.send(text)**
f.close()
else:
**s2.send("no file with this name")**
s.close()
s2.close()
if __name__ == '__main__':
main()
问题是我在另一台电脑上试过了,程序只是没有发送消息(粗体),我不明白为什么,因为代码在另一台电脑上工作,经过几次测试,我知道它找到了文件,一切都是好的,它只是不发送消息(.txt 文件不为空)