network_set_config

使用此函数,您可以设置不同的网络配置。

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

这些配置以常量的形式提供,设置将取决于您选择的常量。下表列出了可用的常量及其设置:

网络配置常量
常量描述设置
network_config_connect_timeoutSet a connection timeout value以毫秒为单位的值
network_config_use_non_blocking_socketTell GameMaker not to block on connect.0 = 阻塞的, 1 = 不阻塞
network_config_enable_reliable_udpEnables the "reliable UDP" protocol for an existing UDP socket目标的套接字ID
network_config_disable_reliable_udpDisables the "reliable UDP" protocol for an existing UDP socked.目标的套接字ID
network_config_avoid_time_waitSets the SO_LINGER timeout value to 0 for an exisiting TCP socket目标的套接字ID
network_config_enable_multicastEnables multicast support for UDP目标的套接字ID
network_config_disable_multicastDisables multicast support for UDP目标的套接字ID

暂停

第一个选项 (network_config_connect_timeout) 仅设置连接到服务器的超时,但除了您必须等待的时间外,不会更改连接行为。建议不要设置得太低,局域网游戏保持在 1000 左右,网络游戏保持在 4000 左右,否则游戏可能会随机连接失败。如果您希望设置发送 / 接收数据包的超时值,请使用函数 network_set_timeout()

非阻塞套接字

第二个选项(network_config_use_non_blocking_socket)表示network_connect_*函数(非异步)将立即返回socket_id,但在收到异步网络事件之前无法在该套接字上发送或接收。触发的事件将"type"键设置为network_type_non_blocking_connect(您可以从网络异步事件的页面中找到更多详细信息)。这是一个全局设置,因为GameMaker不支持在一个应用程序中混合使用阻止和非阻止。

可靠的 UDP

第三个和第四个选项(network_config_enable_reliable_udp,network_config_disable_reliable_udp)用于启用或禁用GameMaker可靠的UDP协议,因此,应该仅用于UDP连接。在这种情况下,"可靠"是指,在连接的两端启用时,GameMaker将尝试检查您的数据包是否已正确到达并重新发送任何未到达的数据包(注意,我们不保证您的数据包是按传输顺序到达的)。使用可靠的套接字类型时,会在所有udp数据包中添加一个12字节的头,其中包含GameMaker检查数据包是否有错误以及重新发送丢失的数据包所需的信息。使用此选项时,以下几点值得注意:

TCP 超时

选项 network_config_avoid_time_wait 仅适用于 TCP 连接 ,可用于将 SO_LINGER 值设置为 0,以避免大量连接处于 TIME_WAIT 状态,占用服务器上的所有可用资源。当套接字处于活动状态时,此更改是永久性的并且无法撤消。

组播

选项 network_config_enable_multicastnetwork_config_disable_multicast 可用于启用 / 禁用 UDP 上的多播支持。

当在 UDP 套接字上启用多播时,它将加入系统中每个网络接口上的全主机 (FF02::1) 多播组,并且调用 network_send_broadcast 将传输多播数据包除了 IPv4 广播之外,还针对这些组。

一般来说,使用 network_send_broadcast 进行 LAN 发现的游戏会希望打开此功能,但游戏必须编写为能够处理从多个 IP(即主机的 IPv4 和 IPv6 地址) 多次接收同一数据包 (es) 并消除这些与其他主机的歧义 (例如,通过在每个发送者的数据包中嵌入唯一值)。

 

语法:

network_set_config(config_value, setting);

参数类型描述
config_value网络配置常量要设置的配置常量(请参阅本页顶部的表格)。
settingAny配置的设置值。

 

返回:

String

 

例子:

network_set_config(network_config_connect_timeout, 1000);
network_set_config(network_config_use_non_blocking_socket, 1);

以上代码将网络连接的超时设置为1000 ms,并告诉GameMaker不要阻塞连接。