我正在尝试创建一个服务器和一个客户端,该客户端和服务器将文件从客户端发送到服务器,然后服务器将其保存到硬盘,然后服务器请求另一个文件,如果客户端的回答是“是”,则客户端发送第二个文件,然后服务器再次保存它,如果客户端的回答是没有服务器,当我运行此代码时,关闭套接字,则发送第一个文件 并成功接收,但是在那之后服务器和客户端都冻结了,没有任何反应,这是什么问题,我该如何解决?
我的服务器代码:
import socket
host = 'localhost'
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(5)
(client, (ip, port))=s.accept()
while True:
data = "".join(iter(lambda: client.recv(1), "\n"))
with open('filehere.txt', 'w') as file:
for item in data:
file.write("%s" % item)
if not data: break
client.send("is there any other file?")
d = client.recv(2048)
if d == "yes":
while True:
data = "".join(iter(lambda: client.recv(1), "\n")
with open('filehere1.txt', 'w') as file:
for item in data:
file.write("%s" % item)
if not data: break
s.close()
else:
s.close()
我的客户代码:
import socket
host = 'locahost'
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
f = open('myfile.txt', 'rb')
l = f.read()
while True:
for line in l:
s.send(line)
break
f.close()
d = s.recv(2048)
a = raw_input(d)
if a == "yes":
s.send("yes")
f = open('myfile1', 'rb')
l = f.read()
while True:
for line in l:
s.send(line)
break
f.close()
else:
s.close
答案 0 :(得分:0)
即使服务器未发送“是”,为什么还要在客户端检查.tf_configure.bazelrc
我认为您可以检查已安装的a == "yes"