我正在制作一个在IDLE中服务器和客户端之间运行的数字猜谜游戏。我正在使用两个while循环,如下所示:
服务器:
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次机会获得正确的号码。但是,当前设置仅允许用户因某种原因猜测一次。在此之后,服务器的while循环停止发送指令,因此用户无法猜测。我该如何解决这个问题?
答案 0 :(得分:2)
我能找到的唯一问题是该行
s.send(y.encode())
引发了异常,应该是
s.send(str(y).encode())
其他一切工作正常(它给了我预期的3次猜测)