Networking 游戏制造商联网,发送太多数据

Networking 游戏制造商联网,发送太多数据,networking,game-maker,Networking,Game Maker,我正在和game Maker一起开发一个游戏,在网络方面遇到了一些问题:(我的服务器是在Twisted框架的帮助下用python编写的 任何人,例如,当我在Game Maker游戏中单击一个按钮将登录信息发送到服务器时,似乎只需单击鼠标即可多次发送,这是不对的。这是我的发送脚本代码 var t_buffer = buffer_create(256, buffer_grow, 1) buffer_seek( t_buffer, buffer_seek_start, 0) buffer_write(

我正在和game Maker一起开发一个游戏,在网络方面遇到了一些问题:(我的服务器是在Twisted框架的帮助下用python编写的

任何人,例如,当我在Game Maker游戏中单击一个按钮将登录信息发送到服务器时,似乎只需单击鼠标即可多次发送,这是不对的。这是我的发送脚本代码

var t_buffer = buffer_create(256, buffer_grow, 1)
buffer_seek( t_buffer, buffer_seek_start, 0)
buffer_write( t_buffer , buffer_string, chr(argument0) + string(argument1) )
network_send_packet(obj_Server.client, t_buffer, buffer_tell(t_buffer))
buffer_delete(t_buffer)
我的服务器端,现在,我只是打印出发送的数据,它打印出五行相同的内容

# Sends received data to the protocol handler
def dataReceived(self, data):
    self.protocolHandler(data)

# Parses data sent from the client
def protocolHandler(self, data):
    # Split our data
    #values = data.split("\x01")
    #eventTokens = values.pop(0)
    #eventToken1, eventToken2 = eventTokens
    print "Data Received:: " + str(data) + ": First Character: " + data[0]
为了便于解释,这些令牌只是帮助我确定我在游戏中需要做什么,例如,如果我收到\x01\x03,我知道这是一个登录数据包,并且应该附加登录数据。如果我收到\x02\x03,我知道这与我的客户的玩家去世类似


我应该如何处理数据的发送,使其不会发送大量数据包?

GM不应该多次发送数据。在代码中使用
show_message(“data sent”);
查看实际执行的次数

如果它执行多次,那么您需要查看如何准确地调用该代码


如果它只执行一次,那么您在服务器端处理它的方式肯定有问题,但我不熟悉Twisted框架。

可能它使用的是UDP,一种不可靠的协议,它会将所有内容发送五次,以确保达到目的。