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...
ENetConnection
Успадковує: RefCounted < Object
Клас обгортки для ENetHost.
Опис
Мета ENet полягає в тому, щоб забезпечити відносно тонкий, простий і надійний мережевий шар зв'язку на вершині UDP (користувацький протокол Datagram).
Посібники
Методи
void |
bandwidth_limit(in_bandwidth: int = 0, out_bandwidth: int = 0) |
void |
broadcast(channel: int, packet: PackedByteArray, flags: int) |
void |
channel_limit(limit: int) |
void |
compress(mode: CompressionMode) |
connect_to_host(address: String, port: int, channels: int = 0, data: int = 0) |
|
create_host(max_peers: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) |
|
create_host_bound(bind_address: String, bind_port: int, max_peers: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) |
|
void |
destroy() |
dtls_client_setup(hostname: String, client_options: TLSOptions = null) |
|
dtls_server_setup(server_options: TLSOptions) |
|
void |
flush() |
get_local_port() const |
|
get_max_channels() const |
|
pop_statistic(statistic: HostStatistic) |
|
void |
refuse_new_connections(refuse: bool) |
void |
socket_send(destination_address: String, destination_port: int, packet: PackedByteArray) |
Переліки
enum CompressionMode: 🔗
CompressionMode COMPRESS_NONE = 0
Немає стиснення. Це використовує найбільш пропускну здатність, але має в сторону, що вимагає декількох ресурсів процесора. Ця опція також може бути використана для того, щоб зробити мережеве відключення за допомогою інструментів, таких як Wireshark простіше.
CompressionMode COMPRESS_RANGE_CODER = 1
Вбудований кодування діапазону ENet. Добре працює на невеликих пакетах, але не є найефективнішим алгоритмом пакетів більше 4 КБ.
CompressionMode COMPRESS_FASTLZ = 2
` QuickLZ <https://fastlz.org/>`__ стиснення. Цей параметр використовує менше ресурсів процесора порівняно з COMPRESS_ZLIB, за рахунок використання більш пропускної здатності.
CompressionMode COMPRESS_ZLIB = 3
Зліб стиснення. Цей параметр використовує меншу пропускну здатність порівняно з COMPRESS_FASTLZ, за рахунок використання більше ресурсів процесора.
CompressionMode COMPRESS_ZSTD = 4
Зстандарт стиснення. Зауважте, що цей алгоритм не дуже ефективний у пакетах менше 4 КБ. Тому рекомендується використовувати інші алгоритми стиснення в більшості випадків.
enum EventType: 🔗
EventType EVENT_ERROR = -1
Сталася помилка під час обслуговування service(). Вам, ймовірно, потрібно буде знищити destroy() хост і створити його заново.
EventType EVENT_NONE = 0
Жодна подія сталася в межах зазначеного ліміту часу.
EventType EVENT_CONNECT = 1
Завершено запит підключення enet_host_connect. У масиві є однолітки, які успішно підключені.
EventType EVENT_DISCONNECT = 2
Відключений одноліток. Цей захід генерується на успішному завершенні від’єднання, що ініціюється ENetPacketPeer.peer_disconnect(), якщо у однолітків з'явився час, або якщо запит з'єднання, що ініціюється підключення_to_host(). У масиві є однолітки, які відключені. Поле даних містить дані, що містять дані, що містять відключення, або 0, якщо немає.
EventType EVENT_RECEIVE = 3
Пакет отримав від однолітків. У масиві будуть представлені однолітки, які відправили пакет і номер каналу, на який був отриманий пакет. Отриманий пакет буде черганий асоційованим ENetPacketPeer.
enum HostStatistic: 🔗
HostStatistic HOST_TOTAL_SENT_DATA = 0
Загальна кількість відправлених даних.
HostStatistic HOST_TOTAL_SENT_PACKETS = 1
Сумарні пакети UDP відправлені.
HostStatistic HOST_TOTAL_RECEIVED_DATA = 2
Отримані дані.
HostStatistic HOST_TOTAL_RECEIVED_PACKETS = 3
Отримано всі пакети UDP.
Описи методів
void bandwidth_limit(in_bandwidth: int = 0, out_bandwidth: int = 0) 🔗
Регулює обмеження смуги хосту.
void broadcast(channel: int, packet: PackedByteArray, flags: int) 🔗
Прийміть packet для відправки всіх однолітків, пов'язаних з господарем за вказаною channel. ENetPacketPeer FLAG_* константи для доступних прапорів пакета.
void channel_limit(limit: int) 🔗
Обмеження максимальних дозволених каналів майбутнього вхідних з'єднань.
void compress(mode: CompressionMode) 🔗
Налаштовує метод стиснення, який використовується для мережевих пакетів. Вони мають різні торгові точки швидкості стиснення versus пропускної здатності, ви можете перевірити, що один працює краще для вашого використання випадку, якщо ви використовуєте стиснення на всіх.
Примітка: Більшість дизайн мережі ігор передбачають відправку багато невеликих пакетів часто (менше 4 КБ кожен). Якщо в сумніві, рекомендується зберігати алгоритм стиснення за замовчуванням, оскільки він працює краще на цих невеликих пакетах.
Примітка: Режим стиснення повинен бути встановленим до того ж значення на сервері і всіх його клієнтів. Клієнти не з’єднуються, якщо встановлений на сервері режим стиснення відрізняється від одного набору.
ENetPacketPeer connect_to_host(address: String, port: int, channels: int = 0, data: int = 0) 🔗
Ініціати з'єднання з іноземною параційна адреса за допомогою вказаного port і виділення запитуваного channels. Додатково data можна пройти під час підключення у вигляді цілого 32 біт.
Примітка: Ви повинні викликати або створення_host() або створення_host_bound() на обох кінцях, перш ніж викликати цей метод.
Error create_host(max_peers: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) 🔗
Створює ENetHost, що дозволяє підключенням однолітків max_peers, кожен бажаючий до каналів max_channels, додатково обмежуючи пропускну здатність до in_width і out_bandwidth (якщо більше нуля.)
Цей етод поєднує в собі випадковий доступний динамічний порт UDP на хост-машину за адресою unspecified. Використовуйте create_host_bound(), щоб вказати адресу та порт.
Примітка: Для встановлення з'єднання необхідно створити хост як клієнт, так і сервер.
Error create_host_bound(bind_address: String, bind_port: int, max_peers: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) 🔗
Створює ENetHost, що межує з даним bind_address і bind_port, що дозволяє max_peers підключених однолітків, кожен бажаючий до max_channels каналів, додатково обмежуючи пропускну здатність до in_width і out_width (якщо більше нуля).
Примітка: Для встановлення підключення необхідно створити хост як клієнт, так і сервер.
void destroy() 🔗
Дестройс хост і всі ресурси, пов'язані з ним.
Error dtls_client_setup(hostname: String, client_options: TLSOptions = null) 🔗
Налаштуйте це ENetHost для використання користувацького розширення Godot, що дозволяє шифрування DTLS для клієнтів ENet. Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Ви можете пройти додаткові параметри параметра Client_options для налаштування перевірених органів з сертифікації або відключення загальної перевірки назв. TLSOptions.client() і TLSOptions.client_unsafe().
Error dtls_server_setup(server_options: TLSOptions) 🔗
Налаштуйте цей ENetHost для використання користувацького розширення Godot, що дозволяє шифрування DTLS для серверів ENet. Зателефонуйте за допомогою DTLS. Див. TLSOptions.server().
void flush() 🔗
Відправляє будь-які черги пакетів на ведучих, зазначених до його призначених однолітків.
Повертає локальний порт, до якого зв'язується цей одноліток.
int get_max_channels() const 🔗
Повертаємо максимальну кількість каналів, дозволених для підключених однолітків.
Array[ENetPacketPeer] get_peers() 🔗
Повертає список однолітків, пов'язаних з цим хостом.
Примітка: Цей список може включати деякі однолітки, які не повністю підключені або поки не відключені.
float pop_statistic(statistic: HostStatistic) 🔗
Повертає та скидає статистику хоста.
void refuse_new_connections(refuse: bool) 🔗
Налаштування сервера DTLS для автоматичного падіння нових підключень.
Примітка: Цей метод доступний тільки після виклику dtls_server_setup().
Array service(timeout: int = 0) 🔗
Очікується, що події на цьому з'єднанні та упакуванні маршрутів між хостом та його однолітками, з заданим timeout (в мілісекунді). Повернутий Array буде мати 4 елементи. EventType, ENetPacketPeer, який створив захід, пов'язаний дані (якщо це), подія, пов'язана з каналом (за наявності). Якщо сформований захід EVENT_RECEIVE, отриманий пакет буде черганий асоційованим ENetPacketPeer.
Зателефонуйте цю функцію регулярно, щоб обробляти з'єднання, відключення та отримувати нові пакети.
Примітка: Цей метод повинен бути викликаний як на кінцях, що беруть участь у заході (закінчення та отримання господарів).
void socket_send(destination_address: String, destination_port: int, packet: PackedByteArray) 🔗
Надсилання packet до місця призначення з адреси та порту, в даний час, пов'язаної з цим екземпляром ENetConnection.
Це корисно, оскільки він служить для встановлення записів в таблицях NAT на всіх пристроях між цією межею та Інтернетом громадського облицювання, що дозволяє потенційним пакетам з'єднання клієнтів, які можуть бути передані назад через пристрій NAT (s) між громадським інтернетом та цим хостом.
Для того, щоб отримати знання про адресний та комунікаційний порт потенційного клієнта, як видно громадський інтернет - після того, як будь-які пристрої NAT обробляються запитом про підключення. Ця інформація може бути отримана за допомогою ` Послуга STUN <https://en.wikipedia.org/wiki/STUN>`__ і повинна бути передана вашому господарю особою, яка не є потенційним клієнтом. У зв’язку з характером алгоритму маршрутизації Symmetric NAT, оскільки їх IP і порт не можуть бути відомі заздалегідь.