高レベルネットワーク接続です。クライアントからサーバー、サーバーからクライアントの両方の接続に使用されます。
A NetworkConnection corresponds to a specific connection for a host in the transport layer. It has a connectionId that is assigned by the transport layer and passed to the Initialize function.
NetworkClient には 1 つの NetworkConnection があります。NetworkServerSimple によって複数の NetworkConnections が管理されています。NetworkServer には複数の "遠隔" 接続と、ローカルクライアントのための 1 つの "ローカル" 接続があります。
NetworkConnection クラスにはメッセージの送信と処理機能が備えられています。ネットワーク経由の送信データのためには、メッセージオブジェクト、バイト配列、NetworkWriter オブジェクトを送信するメソッドがあります。ネットワークからの受信データに対応するためには、メッセージ ID にハンドラ関数を登録し、 HandleBytes() でバイト配列を処理し、HandleReader() で NetworkReader オブジェクトを処理することができます。
NetworkConnection オブジェクトはネットワークされたオブジェクトの監視役としても働きます。ある接続が NetworkIdentity を持つ ネットワークされたオブジェクトの監視役である場合、オブジェクトは紐づけられた接続のクライアントから見ることができ、インクリメンタルな状態の変更はクライアントに送信されます。
NetworkConnection オブジェクトはネットワークゲームオブジェクトを「所有する」ことができます。所有されるオブジェクトは、接続が削除されるとき、デフォルトではサーバー側で削除されます。接続は、クライアントによって作成されたプレイヤーオブジェクトと、関連するクライアントに割り当てられたクライアント承認をもつ他のオブジェクトを所有します。
NetworkConnection には、その挙動をカスタマイズするための多くの仮想関数があります。 NetworkClient と NetworkServer は両方とも、networkConnectionClass のメンバー変数を設定することにより NetworkConnection から派生したカスタムクラスをインスタンス化するために作られています。
address | 接続に伴う IP アドレス |
clientOwnedObjects | localPlayerAutority 設定があり、ローカルの権限でオブジェクトを生み出したか AssignLocalAuthority を設定した場合、 これには接続のためのプレーヤーオブジェクトが含まれます。このリストは読み取り専用です。 |
connectionId | transport レイヤーに指定された接続のユニークな識別子 |
hostId | この接続のトランスポートレベルのホスト ID |
isConnected | 接続がリモートエンドポイントに接続されている場合は True 。 |
isReady | クライアントが NetworkClient.Ready() を呼び出すことによって接続が「読み込み可能(ready)」 としてマークされた場合に伝えるフラグ |
lastMessageTime | この接続で受信された最新のメッセージ |
logNetworkMessages | True に設定するとコンソールにネットワークメッセージの内容が記録されます。 |
playerControllers | このコネクションのプレイヤー一覧 |
Networking.NetworkConnection | True に設定するとコンソールにネットワークパケットの内容が記録されます。 |
CheckHandler | この関数はメッセージ ID の登録されているメッセージハンドラーがあるかチェックします。 |
Disconnect | この接続を切断します。 |
Dispose | 接続を保持しているチャンネルバッファを解除して、切断します。 |
FlushChannels | これによりトランスポートレイヤーにデータをフラッシュするネットワーク接続のチャンネル |
GetStatsIn | 入ってくるトラフィックの統計情報を取得します。 |
GetStatsOut | 出ていくトラフィックの統計情報を取得します。 |
Initialize | これは、チャンネルバッファを含む NetworkConnection オブジェクトの内部のデータ構造を初期化します。 |
InvokeHandler | この関数はメッセージを登録されているハンドラー関数を呼び出します。 |
InvokeHandlerNoData | この関数はメッセージデータなしで登録されているハンドラー関数のメッセージを呼び出します。 |
RegisterHandler | メッセージ ID のハンドラー関数を登録します。 |
ResetStats | NetworkClient.GetConnectionStats() から返された統計値をリセットします。 |
Send | 接続のメッセージ ID とネットワークメッセージを送信します。このメッセージはチャンネル 0 に送信します。デフォルトでは信頼性の高いチャンネルです。 |
SendByChannel | 特定のトランスポートレイヤーのチャンネルを使用して接続時にネットワークメッセージを送信します。 |
SendBytes | これは、接続上で byte 配列で送信します。 |
SendUnreliable | 接続のメッセージ ID を持つネットワークメッセージを送信します。このメッセージはチャンネル 1 に送信します。デフォルトでは信頼性の低いチャンネルです。 |
SendWriter | これは、接続上で NetworkWriter オブジェクトのコンテンツを送信します。 |
SetChannelOption | これは、ネットワークのチャンネルに関するオプションを設定します。 |
SetMaxDelay | 最大時間(単位:秒)で、メッセージは送信する前にバッファされます。 |
ToString | NetworkConnection オブジェクトのステートを文字列形式で返します。 |
TransportRecieve | この仮想関数はアプリケーションに渡される前にカスタムのネットワーク接続クラスがネットワークからのデータを処理するのを許可します。 |
TransportSend | この仮想関数はネットワークトランスポートレイヤーに行く前にカスタムのネットワーク接続クラスがアプリケーションによって送信されたデータを処理するを許可します。 |
UnregisterHandler | メッセージ ID に登録されているハンドラーを削除します。 |
HandleBytes | バッファーに含まれているデータを接続処理し、ハンドラー関数を呼び出します。 |
HandleReader | ストリームに含まれているデータを接続処理し、ハンドラー関数を呼び出します。 |