我完全无法尝试用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(
客户:
^{pr2}$-主程序/程序开始
import gameserver
import gameclient
if __name__ == "__main__":
server = gameserver.GameServer(1300)
server.start_server()
client = gameclient.GameClient(1300, "localhost")
client.register()
注意:我很可能会犯多个错误,并且可能违反了语言中的一些最佳实践。我真的不知道。在
此库似乎不是异步的,因此您对
serve_forever
的第一次调用将不会返回,并且您的客户端永远不会启动。您可以创建一个新线程来启动服务器,或者将客户机和服务器拆分为不同的进程。在问题是其中一些呼叫被阻塞了。特别是,
serve_forever()
方法将永远运行,因此如果希望程序的其余部分继续运行,则需要将该方法放在单独的线程上:socket.recv()
也是一个阻塞调用,但在这种情况下可能没问题。在相关问题 更多 >
编程相关推荐