2014-10-16 116 views
1

我正在IDLE中的服务器和客户端之间运行的猜数字游戏。我用两个while循环,如下所示:虽然服务器和客户端之间的循环(Python)

服务器:

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() 

用户应该有三次机会,以获得数权利。但是,目前的设置只允许用户由于某种原因进行一次猜测。在此之后,服务器的while循环停止发送指令,因此用户无法猜测。我该如何解决?

+0

为什么你要在每次迭代中创建并连接一个新套接字? – 2014-10-16 11:03:58

回答

2

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

s.send(y.encode()) 

引起的异常,而应是

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

其他一切工作的罚款(它给了我3个猜测预期)

相关问题