network_send_broadcast

此函数将数据从本地缓冲区广播到一系列 IP 地址 (有关缓冲区的更多信息,请参阅 参考 - 缓冲区 )。

该范围仅限于运行服务器的设备的范围,因此如果设备的 IP 为 92.168.11.130,则数据将在 92.168.11.* 范围内广播。该函数将返回已发送数据的字节数,如果发送失败,则返回小于 0 的数字。

注意 此函数仅在与 UDP 一起使用时才有效 - 您的服务器需要是 TCP,并且您的客户端需要具有使用 network_create_socket_ext 创建的 UDP 客户端套接字才能接收从服务器发送的任何广播。

注意在HTML5目标上运行的项目中使用此函数将不起作用。

重要信息iOS 14 及更高版本要求您请求多播授权 (com.apple.developer.networking.multicast) 并启用它,以便 发送和接收 多播广播。要让 GameMaker 添加此权利,您应该在 iOS 游戏选项 /tvOS 游戏选项启用广播网络 ( 不这样做会引发错误)。
此外,在首次发送数据包之前,iOS 14 不会向用户显示同意模式对话框。因此,如果 UDP 套接字仅接收,则不会显示警报。解决此问题的一种方法是发送一个空的 " 虚拟 " 数据包,以便触发同意模式。

语法:

network_send_broadcast(socket, port, bufferid, size);

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

 

返回:

Real

 

例子:

buffer_seek(broadcast_buffer, buffer_seek_start, 0);
buffer_write(broadcast_buffer, buffer_string, global.ServerName);
network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));

上述代码写入当前服务器的名称字符串 (存储在 global.ServerName 中),然后将其写入到存储在 broadcast_buffer 中的缓冲区。然后,该数据会在本地广播到端口 6511 的 IP 范围 (设备 IP 当前隐含为广播基本范围)。