我已经创建了一个UDP客户端 - 服务器系统。它背后的想法是多个客户端连接到服务器并发送它的数据包。服务器的目标是将这些数据包发送给所有其他客户端。它有点工作,在客户端有一个延迟,它后来收到数据包,然后它是暂停到达。这几乎就像数据包排队并稍后处理一样。
对于这种延迟,有什么可以做的吗?
我为一款需要多人游戏的游戏做了这个。客户端他对服务器和服务器的世界定位将其发送给客户端。如果客户收到包裹,则将移动应用于正确的用户。这就是延迟发生的地方!
我初始化服务器的方式:
self.server = socket.socket(socket.AF_INET, socket.
self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server.bind((self.bind_ip, self.bind_port))
听众 request,addr = self.server.recvfrom(1024)
if 'position' in decoded_request.
self.latest_pos['init_connection']["{}:{}".format(addr[0],addr[1])] =
decoded_request['position']['coordinates']
self.broadcast_message(request)
Broadcast_message方法:
def broadcast_message(self, packet):
for client in self.user_addresses.values():
self.server.sendto(packet, (client[0], client[1]))
客户:
data, addr = self.server.recvfrom(1024)
data = json.loads(data.decode)
** here is the code that handles the packet ** a.k.a. apply the movement to the player
如果它收到一个json与例如然后,worldposition将移动应用于等于ip的用户对象。