服务器与客户端之间的while循环(Python)

1 投票
1 回答
1469 浏览
提问于 2025-04-27 22:08

我正在制作一个数字猜谜游戏,这个游戏在服务器和客户端之间运行,使用的是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次猜测,正如我预期的那样)

撰写回答