在服务器和客户端之间循环(Python)

时间:2014-10-16 10:25:11

标签: python loops while-loop client

我正在制作一个在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循环停止发送指令,因此用户无法猜测。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我能找到的唯一问题是该行

s.send(y.encode())

引发了异常,应该是

s.send(str(y).encode())

其他一切工作正常(它给了我预期的3次猜测)