如何在套接字服务器中与RequestHandler之间传递信息

时间:2013-06-11 20:40:21

标签: python sockets networking python-3.x

我有一个管理套接字服务器的类。信息需要在它和处理程序之间双向传递。我可以使用一些工作来让Handler将信息传递给游戏服务器,但不是相反。这似乎是一个非常普遍的需求。也有可能有一个更好的方法来完成这一切,我违反了一些常见的做法,在这种情况下我想知道所以我可以用更标准的方式编写我的代码(我不是试图做任何花哨的事情。)

class GameServer:
    class GameServerUDPHandler(socketserver.BaseRequestHandler):
        #... (other, irrelevant functions)
        def handle(self):
            data = self.request[0].strip()
            data = str(data, 'utf-8')
            print(data)
            socket = self.request[1]
            data = data.split('\n')
            option = data[0]
            print(option)
            c_add = self.client_address
            if option == "register" and not self.server.base.has_started:
                self.handle_register(socket, c_add)
                print("test")
            elif option == "get_postion":
                handle_get_postion(socket, c_add, data[1])
            elif option == "change_postion":
                hande_changed_postion(socket, c_add, data[1])
            #temporary
            if len(self.server.base.players) > 0:
                self.server.base.start

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

    def start_server(self):
        threading.Thread(target=self.server.serve_forever).start()

    def start_game():
        self.has_started = True
        self.server.RequestHandler.alert_start()

0 个答案:

没有答案