gpt4 book ai didi

Python 游戏服务器

转载 作者:行者123 更新时间:2023-11-28 22:55:20 24 4
gpt4 key购买 nike

我完全无法尝试用 Python 为我的游戏创建 UDP 服务器/客户端。我是这门语言的新手,在网络方面的经验有限。现在,服务器正在运行,但似乎没有收到来自客户端的任何消息。

服务器:

class GameServer:
class GameServerUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
print("{} wrote:".format(self.client_address[0]))
print(data)
socket.sendto(data.upper(), self.client_address)

def __init__(self, port):
self.server = socketserver.UDPServer(("localhost", port), self.GameServerUDPHandler)

def start_server(self):
self.server.serve_forever(

客户:

import socket
import sys

class GameClient:
def __init__(self, port, host):
self.port = port
self.host = host
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

def register(self):
self.socket.sendto(bytes("register\n", "utf-8"), (self.host, self.port))
self.numberID = int(self.socket.recv(1024))
print("Received: {}".format(self.numberID))

-程序的主要/开始

import gameserver
import gameclient

if __name__ == "__main__":
server = gameserver.GameServer(1300)
server.start_server()
client = gameclient.GameClient(1300, "localhost")
client.register()

注意:我很可能会犯很多错误,并且可能会违反语言中的一些最佳实践。我真的不知道。

最佳答案

问题是其中一些调用被阻塞了。特别是,serve_forever() 方法将永远运行,因此如果您希望程序的其余部分继续运行,则需要将其放在单独的线程中:

import threading
if __name__ == "__main__":
server = GameServer(1300)
server_thread = threading.Thread(target=lambda: server.start_server())
server_thread.start()

time.sleep(1) # Give it time to start up; not production quality code of course

client = GameClient(1300, "localhost")
client.register()

socket.recv() 也是一个阻塞调用,但在这种情况下可能没问题。

关于Python 游戏服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com