首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python游戏服务器

Python游戏服务器
EN

Stack Overflow用户
提问于 2013-06-10 03:23:59
回答 2查看 3.9K关注 0票数 2

我在尝试用python为我的游戏创建一个UDP服务器/客户端时完全迷失了方向。我刚接触这门语言,在网络方面的经验有限。现在,服务器正在运行,但似乎没有收到来自客户端的任何消息。

服务器:

代码语言:javascript
复制
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(

客户端:

代码语言:javascript
复制
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))

-程序的主/开始

代码语言:javascript
复制
import gameserver
import gameclient

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

注意:我最有可能犯多个错误,并且可能违反了语言中的几个最佳实践。我真的一无所知。

EN

Stack Overflow用户

发布于 2013-06-10 03:38:18

看起来这个库不是异步的,所以您对serve_forever的第一次调用将不会返回,并且您的客户端永远不会启动。您可以创建一个新线程来启动服务器,也可以将客户端和服务器拆分成单独的进程。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17013289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档