2015-12-12 82 views
0

服務器:猜數字遊戲(客戶端 - 服務器)

import socket 
import random 


randnumber = random.randrange(1,20) 
ip = '127.0.0.1' 
port = 5000 
n = 1 
tries = 0 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((ip,port)) 
s.listen(5) 
print("...<<") 

while True : 
     (c,a) = s.accept() 
     print("Sundedemenos me ton ",a)  
     data = c.recv(1024).decode()  
     if (data): 
      wellcome = ("Welcome to the guess the number game!") 
      c.send(wellcome.encode()) 
      gues =("What is your guess? ") 
      c.send(gues.encode()) 
      value = int(c.recv(1024).decode()) 
      print (value) 
      goal = abs(value-randnumber) 
      print(goal) 

c.close()  

客戶:

import socket 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
s.connect(("127.0.0.1",5000)) 


hello = ("hello") 
s.send(hello.encode()) 

wellcome = s.recv(1024).decode() 
print (wellcome) 

gues = s.recv(1024).decode() 
print (gues) 

while (gues): 

    if not gues: 
     break 
    else: 

     value = input() 
     s.send(value.encode()) 



s.close() 

你好, 爲什麼客戶端運行千兆次爲什麼休息不工作? 我只是想讓遊戲運行在服務器和客戶端上,例如「歡迎遊戲」>「你猜怎麼着?」 >「5」>「你接近」>「6」>「你是更好的人」>結束

回答

0

這是一個永遠是真的循環,因爲gues永遠不會改變!

while (gues): 

if not gues: 
    break 
else: 

    value = input() 
    s.send(value.encode()) 

另外,我覺得這兩個while循環是在錯誤的地方:

  • 在客戶端中,而循環永遠不會從套接字進行讀取,因此它是如何獲取服務器的答案嗎?
  • 在服務器上,我認爲你需要第二個while循環。第一個告訴服務器「當你有另一個客戶端」,然後您顯示歡迎信息,然後你必須「而客戶在猜測/還沒有找到答案」

希望它能幫助,可惜的是不要」沒有時間去實施它,但我認爲這是一個很好的練習,你應該做:)