Python网络/套接字编程,简单gam

2024-04-18 09:05:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个简单的游戏,但不明白如何使它工作,并发送更多的东西在网络上。它第一次起作用了,但它应该去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))

客户

^{pr2}$

Tags: import网络服务器host游戏bindport数字
2条回答

问题是你的服务器将为一个请求提供服务,然后停止。你需要把它放到某种while循环中。在

我用Python编写了一个基本的IM服务器/客户机,它可能会帮助您:https://github.com/hdgarrood/PyMess/blob/master/server/basictcpserver.py#L59

你需要线程做你的出价。在

示例代码

# 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将如下所示:

^{pr2}$

更新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

相关问题 更多 >