Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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% 之間的中間概率。考慮本地和外部主機的頻寬限制,以確定節流概率的合理限制,即使在最好的條件下也不應超過該限制。