network_send_packet

该函数通过网络发送数据 " 包"。

该函数采用 网络套接字 ID 进行连接,然后提供包含要发送的数据的 缓冲区 ( 有关缓冲区的更多信息,请参阅 参考 - 缓冲区 ),最后是数据包的大小 (以字节为单位)。

使用此函数发送的数据包经过格式化,以便接收数据的 GameMaker 游戏可以正确 " 拆分 " 数据包,并且该函数将返回发送的数据的字节数,如果发送的数据有字节数,则返回小于 0 的数字失败的。值得注意的是,该函数返回的发送数据的最终大小还将包含 GameMaker 标头信息,即额外的 12 个字节。

警告 您不得在游戏中混合使用常规函数和原始函数,因为这样做会导致问题。这意味着,对于使用 network_connect 建立的连接,您必须使用 network_send_packet,而对于 network_connect_raw,则必须使用 network_send_raw.

注意 此函数使用类似 TCP 的套接字 (即 network_socket_tcp)。它也可能适用于其他套接字类型,但这不能保证。

 

语法:

network_send_packet(socket, bufferid, size);

参数类型描述
socketNetwork Socket ID要使用的套接字的ID。
bufferidBuffer从中获取数据的缓冲区。
sizeReal数据的大小(以字节表示)。

 

返回:

Real

 

例子:

buff = buffer_load("player_save.dat");
network_send_packet(sock, buff, buffer_get_size(buff));

上述代码将之前保存的数据加载到内存中的缓冲区中,并将新创建的缓冲区存储在变量 buff 中。然后,使用变量 sock 标识的套接字将这个完整的缓冲区作为数据包通过网络发送。