服务器与客户端之间的while循环(Python)
我正在制作一个数字猜谜游戏,这个游戏在服务器和客户端之间运行,使用的是IDLE。我用了两个循环,分别是:
服务器:
l = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Generate random number
integer = random.randrange(1, 10)
l.bind(("127.0.0.1", 4001))
l.listen(5)
while True:
(s, ca) = l.accept()
#Send instruction to client
s.send("What is your guess? ".encode())
#Receive guess from client
y = s.recv(4096).decode()
#Break out of the loop if the guess was correct
if int(y) == integer:
break
s.close()
客户端:
#User gets 3 guesses
for x in range(0, int(chances)):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 4001))
#Get instruction from server and make a guess
y = input(s.recv(80).decode())
#Guess a number and send it to the server
s.send(y.encode())
s.close()
用户应该有3次机会来猜对这个数字。但是现在的设置只让用户猜一次,不知道为什么。之后,服务器的循环就停止发送指令了,所以用户就不能再猜了。我该怎么解决这个问题呢?
1 个回答
2
我发现的唯一问题是这一行
s.send(y.encode())
引发了一个错误,应该改成
s.send(str(y).encode())
其他的都正常运行(它给了我3次猜测,正如我预期的那样)