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.
Описание
Реализация PacketPeer, представляющая одноранговый узел ENetConnection.
Этот класс не может быть создан напрямую, но может быть извлечен во время ENetConnection.service() или через ENetConnection.get_peers().
Примечание: При экспорте в Android обязательно включите разрешение INTERNET в предустановке экспорта Android перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано 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
Ожидается, что одноранговый узел отключится, когда у него больше не останется исходящих пакетов для отправки.
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 🔗
Возвращает флаги ENet следующего пакета в полученной очереди. См. константы FLAG_* для доступных флагов пакетов. Обратите внимание, что не все флаги реплицируются от отправляющего узла к принимающему узлу.
String get_remote_address() const 🔗
Возвращает IP-адрес этого однорангового узла.
Возвращает удаленный порт данного однорангового узла.
Возвращает текущее состояние однорангового узла (Peer).
float get_statistic(statistic: PeerStatistic) 🔗
Возвращает запрошенную statistic для данного однорангового узла.
Возвращает true, если одноранговый узел в данный момент активен (т. е. связанный ENetConnection все еще действителен).
void peer_disconnect(data: int = 0) 🔗
Запрос на отключение от однорангового пира. ENetConnection.EVENT_DISCONNECT будет сгенерирована во время ENetConnection.service() после завершения отключения.
void peer_disconnect_later(data: int = 0) 🔗
Запросить отключение от пира, но только после того, как все исходящие пакеты в очереди будут отправлены. ENetConnection.EVENT_DISCONNECT будет сгенерирована во время ENetConnection.service() после завершения отключения.
void peer_disconnect_now(data: int = 0) 🔗
Принудительно выполнить немедленное отключение от однорангового пир. ENetConnection.EVENT_DISCONNECT не будет сгенерирован. Не гарантируется, что внешний одноранговый узел получит уведомление об отключении, и он немедленно сбрасывается после возврата из этой функции.
void ping() 🔗
Отправляет запрос ping на одноранговый узел. ENet автоматически пингует все подключенные одноранговые узлы через регулярные интервалы, однако эта функция может быть вызвана для обеспечения более частых запросов ping.
void ping_interval(ping_interval: int) 🔗
Устанавливает ping_interval в миллисекундах, с которым будут отправляться пинги на одноранговый пир. Пинги используются как для мониторинга активности соединения, так и для динамической регулировки дросселя в периоды низкого трафика, чтобы дроссель имел разумную скорость реагирования во время пиков трафика. Интервал пинга по умолчанию составляет 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% ненадежных отправляемых пакетов. Ограничения пропускной способности локальных и внешних хостов учитываются для определения разумного предела для вероятности дросселя, выше которого он не должен подниматься даже в самых лучших условиях.