ENetPacketPeer
繼承: PacketPeer < RefCounted < Object
ENetPeer 的包裝類。
說明
表示 ENetConnection 對等體的 PacketPeer 實作。
該類無法被直接產生實體,但可以在 ENetConnection.service() 期間,或通過 ENetConnection.get_peers() 進行檢索。
注意:匯出到 Android 時,在匯出專案或使用一鍵部署之前,請確保在 Android 匯出預設中,啟用了 INTERNET 許可權。否則,Android 將阻止任何型別的網路通信。
教學
方法
get_channels() const |
|
get_packet_flags() const |
|
get_remote_address() const |
|
get_remote_port() const |
|
get_state() const |
|
get_statistic(statistic: PeerStatistic) |
|
is_active() const |
|
void |
peer_disconnect(data: int = 0) |
void |
peer_disconnect_later(data: int = 0) |
void |
peer_disconnect_now(data: int = 0) |
void |
ping() |
void |
ping_interval(ping_interval: int) |
void |
reset() |
send(channel: int, packet: PackedByteArray, flags: int) |
|
void |
set_timeout(timeout: int, timeout_min: int, timeout_max: int) |
void |
throttle_configure(interval: int, acceleration: int, deceleration: int) |
列舉
enum PeerState: 🔗
PeerState STATE_DISCONNECTED = 0
該對等體已斷開連接。
PeerState STATE_CONNECTING = 1
該對等體正在嘗試連接。
PeerState STATE_ACKNOWLEDGING_CONNECT = 2
該對等體已確認連接請求。
PeerState STATE_CONNECTION_PENDING = 3
該對等體正在連接。
PeerState STATE_CONNECTION_SUCCEEDED = 4
該對等體已成功連接,但還沒有準備好進行通訊(STATE_CONNECTED)。
PeerState STATE_CONNECTED = 5
該對等體已連接,可以進行通訊。
PeerState STATE_DISCONNECT_LATER = 6
The peer is expected to disconnect after it has no more outgoing packets to send.
PeerState STATE_DISCONNECTING = 7
該對等體正在斷開連接。
PeerState STATE_ACKNOWLEDGING_DISCONNECT = 8
該對等體已確認斷開請求。
PeerState STATE_ZOMBIE = 9
該對等體已丟失連接,但並未真正斷開連接(因為該對等體還沒有對斷開連接請求進行確認)。
enum PeerStatistic: 🔗
PeerStatistic PEER_PACKET_LOSS = 0
可靠封包的平均丟包率,即與 PACKET_LOSS_SCALE 的比率。
PeerStatistic PEER_PACKET_LOSS_VARIANCE = 1
丟包方差。
PeerStatistic PEER_PACKET_LOSS_EPOCH = 2
丟包統計資訊上一次被更新的時間(從連接開始後的毫秒數)。丟包統計資訊更新的時間間隔為 10 秒,自上次統計資訊更新以來,至少必須有一個封包被發送。
PeerStatistic PEER_ROUND_TRIP_TIME = 3
可靠封包的平均往返時間。
PeerStatistic PEER_ROUND_TRIP_TIME_VARIANCE = 4
平均往返時間方差。
PeerStatistic PEER_LAST_ROUND_TRIP_TIME = 5
可靠封包的記錄的上次行程時間。
PeerStatistic PEER_LAST_ROUND_TRIP_TIME_VARIANCE = 6
記錄的上次行程時間方差。
PeerStatistic PEER_PACKET_THROTTLE = 7
該對等體的目前節流狀態。
PeerStatistic PEER_PACKET_THROTTLE_LIMIT = 8
不應被丟棄的不可靠封包的最大數量。這個值總是大於或等於 1 。初始值等於 PACKET_THROTTLE_SCALE。
PeerStatistic PEER_PACKET_THROTTLE_COUNTER = 9
用於增加封包節流計數器的內部值。該值被硬編碼為 7 且無法更改。你可能想查看 PEER_PACKET_THROTTLE_ACCELERATION。
PeerStatistic PEER_PACKET_THROTTLE_EPOCH = 10
節流統計資料上一次被更新的時間(自連接開始以來的毫秒數)。節流統計更新的時間間隔是 PEER_PACKET_THROTTLE_INTERVAL。
PeerStatistic PEER_PACKET_THROTTLE_ACCELERATION = 11
節流的加速係數。更高的值將使 ENet 更快地適應波動的網路條件,從而導致不可靠的封包更頻繁地被發送。預設值為 2。
PeerStatistic PEER_PACKET_THROTTLE_DECELERATION = 12
節流的減速係數。更高的值將使 ENet 更快地適應波動的網路條件,從而導致不可靠的封包不會頻繁地被發送。預設值為 2。
PeerStatistic PEER_PACKET_THROTTLE_INTERVAL = 13
測量最低平均往返時間的時間間隔,供節流機制使用(單位:毫秒)。預設值為 5000。
常數
PACKET_LOSS_SCALE = 65536 🔗
丟包的參考尺度。請參閱 get_statistic() 和 PEER_PACKET_LOSS。
PACKET_THROTTLE_SCALE = 32 🔗
節流配置的參考值。預設值為 32。 請參閱 throttle_configure()。
FLAG_RELIABLE = 1 🔗
將要發送的封包標記為可靠。
FLAG_UNSEQUENCED = 2 🔗
將要發送的封包標記為無序(不可靠)。
FLAG_UNRELIABLE_FRAGMENT = 8 🔗
將要發送的封包標記為不可靠,即使封包太大且需要分片(增加其被丟棄的機會)。
方法說明
返回為與對等體通信而分配的通道數。
int get_packet_flags() const 🔗
Returns the ENet flags of the next packet in the received queue. See FLAG_* constants for available packet flags. Note that not all flags are replicated from the sending peer to the receiving peer.
String get_remote_address() const 🔗
返回該對等體的 IP 地址。
返回該對等體的遠端埠。
Returns the current peer state.
float get_statistic(statistic: PeerStatistic) 🔗
Returns the requested statistic for this peer.
如果對等體目前處於活動狀態(即關聯的 ENetConnection 仍然有效),則返回 true。
void peer_disconnect(data: int = 0) 🔗
請求與對等體斷開連接。一旦斷開連接完成,在 ENetConnection.service() 期間,將生成一個 ENetConnection.EVENT_DISCONNECT。
void peer_disconnect_later(data: int = 0) 🔗
請求與對等體斷開連接,但僅在發送完所有佇列的傳出封包之後。一旦斷開連接完成,在 ENetConnection.service() 期間,將生成一個 ENetConnection.EVENT_DISCONNECT。
void peer_disconnect_now(data: int = 0) 🔗
強制立即斷開與對等體的連接。不會生成 ENetConnection.EVENT_DISCONNECT。不保證外部對等體會收到斷開連接通知,並會在從此函式返回後立即重設。
void ping() 🔗
向對等體發送 ping 請求。ENet 會定期自動 ping 所有連接的對等體,但也可以手動調用此函式,確保進行更頻繁的 ping 請求。
void ping_interval(ping_interval: int) 🔗
設定向對等體發送 ping 的間隔 ping_interval,單位為毫秒。Ping 既用於監控連接的有效性,也用於在低流量期間動態調整節流,以便在流量高峰期節流具有合理的回應能力。預設的 ping 間隔為 500 毫秒。
void reset() 🔗
強制斷開對等體。對等體代表的外部主機不會收到斷開連接的通知,並且會在與本地主機的連接上超時。
Error send(channel: int, packet: PackedByteArray, flags: int) 🔗
將封包 packet 加入通過通道 channel 發送的佇列。可用的封包旗標見 FLAG_* 常數。
void set_timeout(timeout: int, timeout_min: int, timeout_max: int) 🔗
設定對等體的超時參數。超時參數控制對等體因無法確認可靠流量而超時的方式和時間。超時值以毫秒表示。
timeout 是一個係數,乘以基於平均往返時間的值,將確定可靠封包的超時限制。當達到該限制時,超時將加倍,如果該限制已達到 timeout_min,則對等體將斷開連接。另一方面,timeout_max 參數定義了一個固定的超時時間,在該時間內必須確認所有封包,否則對等體將被丟棄。
void throttle_configure(interval: int, acceleration: int, deceleration: int) 🔗
為對等體配置節流參數。
不可靠的封包會被 ENet 丟棄,以應對與對等體的互聯網連接的各種情況。節流表示一個不可靠封包不應被丟棄並因此由 ENet 將其發送到對等體的概率。通過測量指定 interval 內可靠封包往返時間的波動,ENet 將按照 acceleration 參數中指定的量增加概率,或者按照 deceleration 參數中指定的量降低概率(兩者都是與 PACKET_THROTTLE_SCALE 的比率)。
當節流的值為 PACKET_THROTTLE_SCALE 時,ENet 不會丟棄任何不可靠的數據包,因此所有不可靠封包以 100% 的概率將被發送。
當節流的值為 0 時,ENet 將丟棄所有不可靠的封包,因此所有不可靠封包以 0% 的概率將被發送。
節流的中間值表示發送不可靠封包的 0% 到 100% 之間的中間概率。考慮本地和外部主機的頻寬限制,以確定節流概率的合理限制,即使在最好的條件下也不應超過該限制。