我正在尝试做一个简单的游戏,但无法理解如何让它工作,并通过网络发送更多的东西。它第一次工作,但它应该运行10次。它现在只发送一个随机数,但我希望它在游戏再次进行时发送一个新的数字,并想要一个新的数字。
服务器
import socket, random
sock = socket.socket()
host = socket.gethostname()
port = 12345
sock.bind((host, port))
sock.listen(5)
c, addr = sock.accept()
cpu = random.choice(range(0, 3))
c.send(cpu)
gameon = c.recv(int(1024))客户端
import socket, random
sock = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
sock.connect((host, port))
GAMEON = 'Rock', 'Paper', 'Scissors'
game = 0
iwin = 0
ilose = 0
tie = 0
while game < 10:
for i in range(0, 3):
print "%d %s" % (i + 1, GAMEON[i])
player = int(input ("Choose from 1-3: ")) - 1
cpu = int(sock.recv(1024))
print cpu
print""
print "%s vs %s" % (GAMEON[player], GAMEON[cpu])
print ""
if cpu != player:
if (player - cpu) % 3 < (cpu - player) % 3:
print "Player wins\n"
iwin += 1
else:
print "CPU wins\n"
ilose += 1
else:
print "TIE!\n"
tie += 1
game += 1
sock.send(str(game))
print"Game is done"
print"you win: ", (iwin), "Times"
print"computer wins: ", (ilose), "Times"
print"tie: ", (tie), "Times"发布于 2013-01-13 00:12:05
你需要线程来做你的命令。
示例代码
# Listen
s.listen(10)
print 'Socket now listening on port ' + str(PORT) + "..."
while 1:
# wait
conn, addr = s.accept()
print 'Connected with ' + addr[0] + ":" + str(addr[1])
# Let's fork a thread for each request
processThread = threading.Thread(target=processConnection, args=(conn, addr[0]));
processThread.start()
s.close()您的processConnection将如下所示:
# Process Connection
def processConnection(conn, ip):
print "Thread started..."
print "-------------------------------------------------------------";
cpu = random.choice(range(0, 3))
conn.send(cpu)
gameon = conn.recv(int(1024))
conn.close()更新1
如果您需要服务器与客户端保持对话,则执行以下操作。服务器将等待客户端发回一条消息。如果客户端发送任何内容,服务器将返回一个随机数。如果客户端不需要更多的数据,只需关闭连接,服务器循环就会结束。
import socket, random
sock = socket.socket()
host = socket.gethostname()
port = 12345
sock.bind((host, port))
sock.listen(5)
c, addr = sock.accept()
white True:
cpu = random.choice(range(0, 3))
c.send(cpu)
gameon = c.recv(int(1024))
if gameon is None:
break发布于 2013-01-13 00:15:11
问题是,您的服务器将为一个请求提供服务,然后停止。你需要把它放在某种while循环中。
我用Python语言编写了一个基本的IM服务器/客户端,它可能会对您有所帮助:https://github.com/hdgarrood/PyMess/blob/master/server/basictcpserver.py#L59
https://stackoverflow.com/questions/14295161
复制相似问题