NetworkConnection

class in UnityEngine.Networking

切换到手册

描述

高级网络连接,用于从客户端到服务器以及从服务器到客户端的连接。

NetworkConnection 对应于传输层中主机的指定连接。它有一个 connectionId,该 ID 由传输层指定并会传递给 Initialize 函数。

一个 NetworkClient 有一个 NetworkConnection。NetworkServerSimple 管理多个 NetworkConnection。NetworkServer 具有多个“远程”连接和一个用于本地客户端的“本地”连接。

NetworkConnection 类提供消息发送和处理功能。对于通过网络发送数据,可通过一些方法来发送消息对象、字节数组和 NetworkWriter 对象。要处理通过网络收到的数据,可以为消息 ID 注册处理程序函数,通过 HandleBytes() 处理字节数组,以及通过 HandleReader() 处理 NetworkReader 对象。

NetworkConnection 对象还充当联网对象的观察者。当连接是具有 NetworkIdentity 的联网对象的观察者时,该对象将对连接的相应客户端可见,并且增量状态更改将发送到客户端。

NetworkConnection 对象可以“拥有”联网的游戏对象。默认情况下,当连接销毁时,将销毁服务器上的拥有对象。连接拥有由其客户端创建的玩家对象,以及具有分配给相应客户端的客户端权限的其他对象。

NetworkConnection 上拥有许多虚拟功能,可用于自定义其行为。通过设置 networkConnectionClass 成员变量,可以让 NetworkClient 和 NetworkServer 实例化派生自 NetworkConnection 的自定义类。

变量

address与连接关联的 IP 地址。
clientOwnedObjects此连接拥有的 NetworkIdentity 对象的列表。
connectionId传输层为此连接分配的唯一标识符。
hostId此连接的传输级别主机 ID。
isConnected如果该连接已连接到远程端点,则为 true。
isReady指示连接是否已被调用 ClientScene.Ready() 的客户端标记为“就绪”的标志。
lastError与此连接关联的最后一个错误。
lastMessageTime此连接收到消息的最后时间。
logNetworkMessages将此属性设置为 true 会将网络消息的内容记录到控制台。
playerControllers此连接的玩家的列表。

公共函数

CheckHandler此函数检查是否针对消息 ID 注册了消息处理程序。
Disconnect断开此连接。
Dispose处理此连接,释放它所拥有的通道缓冲区。
FlushChannels该函数会使网络连接的通道将其数据刷新到传输层。
GetStatsIn获取传入流量的统计信息。
GetStatsOut获取传出流量的统计信息。
Initialize该函数会初始化 NetworkConnection 对象的内部数据结构,包括通道缓冲区。
InvokeHandler此函数调用消息的已注册处理程序函数。
InvokeHandlerNoData此函数调用消息的已注册处理程序函数,而不包含任何消息数据。
RegisterHandler该函数针对消息 ID 注册处理程序函数。
ResetStats重置从 NetworkClient.GetConnectionStats() 返回的统计信息。
Send此函数将在连接上发送带有消息 ID 的网络消息。此消息在通道 0 上发送,该通道默认为可靠通道。
SendByChannel此函数在连接上使用指定传输层通道发送网络消息。
SendBytes此函数会在连接上发送字节数组。
SendUnreliable此函数将在连接上发送带有消息 ID 的网络消息。此消息在通道 1 上发送,该通道默认为不可靠通道。
SendWriter此函数在连接上发送 NetworkWriter 对象的内容。
SetChannelOption该函数在网络通道上设置一个选项。
SetMaxDelay消息在发送之前进行缓冲的最长时间(以秒为单位)。
ToString返回 NetworkConnection 对象状态的字符串表示形式。
TransportReceive此虚拟函数允许自定义网络连接类在网络数据传递到应用程序之前对这些数据进行处理。
TransportSend此虚拟函数允许自定义网络连接类在应用程序发送的数据进入网络传输层之前对这些数据进行处理。
UnregisterHandler此函数可删除针对消息 ID 注册的处理程序。

受保护的函数

HandleBytes该函数会使连接处理缓冲区中包含的数据,并调用处理程序函数。
HandleReader该函数会使连接处理流中包含的数据,并调用处理程序函数。