PacketPeerUDP
Успадковує: PacketPeer < RefCounted < Object
Пакет UDP одномісний.
Опис
Одноранговий пакет UDP. Може використовуватися для надсилання й отримання необроблених UDP-пакетів, а також Variants.
Приклад: Надіслати пакет:
var peer = PacketPeerUDP.new()
# За бажанням ви можете вибрати локальний порт, який використовується для надсилання пакету.
peer.bind(4444)
peer.set_dest_address("1.1.1.1", 4433)
peer.put_packet("привіт".to_utf8_buffer())
Приклад: Прослуховування пакетів:
var peer
func _ready():
peer = PacketPeerUDP.new()
peer.bind(4433)
func _process(_delta):
if peer.get_available_packet_count() > 0:
var array_bytes = peer.get_packet()
var packet_string = array_bytes.get_string_from_ascii()
print("Отримано повідомлення: ", пакет_рядок)
Примітка. Під час експорту в Android переконайтеся, що ви ввімкнули дозвіл INTERNET у попередньому налаштуванні експорту Android перед експортом проекту або використанням розгортання одним клацанням миші. Інакше будь-який мережевий зв’язок буде заблокований Android.
Методи
bind(port: int, bind_address: String = "*", recv_buf_size: int = 65536) |
|
void |
close() |
connect_to_host(host: String, port: int) |
|
get_local_port() const |
|
get_packet_ip() const |
|
get_packet_port() const |
|
is_bound() const |
|
is_socket_connected() const |
|
join_multicast_group(multicast_address: String, interface_name: String) |
|
leave_multicast_group(multicast_address: String, interface_name: String) |
|
void |
set_broadcast_enabled(enabled: bool) |
set_dest_address(host: String, port: int) |
|
wait() |
Описи методів
Error bind(port: int, bind_address: String = "*", recv_buf_size: int = 65536) 🔗
PacketPeerUDP вказаний port і bind_address з розмірами буфера recv_buf_size, що дозволяє отримати вхідні пакети.
Якщо bind_address встановлюється до "*" (default), то він буде прив'язаний до всіх доступних адрес (both IPv4 і IPv6).
Якщо bind_address is set to "0.0.0.0" (для IPv4) або :" (для IPv6), односторонній зв'язок з усіма доступними адресами, що відповідають типу IP.
Якщо bind_address встановлюється на будь-яку дійсну адресу (наприклад, "192.168.1.101", ::1" і т.д.), одноліток буде прив'язаний до інтерфейсу з цією адресою (або не вдається, якщо не існує інтерфейсу з вказаною адресою).
void close() 🔗
Закриває PacketPeerUDP під'єм UDP.
Error connect_to_host(host: String, port: int) 🔗
Зателефонувавши цей метод з'єднує цей UDP однолітній до заданої host/port пара. UDP знаходиться в режимі реального підключення, тому цей варіант тільки означає, що вхідні пакети з різних адрес автоматично відхиляються, і що вихідні пакети завжди надсилаються на підключену адресу (податкові дзвінки до set_dest_address() не допускаються). Цей метод не надсилає ніяких даних на пульт дистанційного керування, щоб зробити це, використовувати PacketPeer.put_var() або PacketPeer.put_packet() як зазвичай. Дивитися також UDPServer.
Примітка: Підключення до пульта дистанційного з’єднання не допомагає захистити від шкідливих атак, таких як IP-покриття тощо. Якщо ви відчуваєте, що ваш додаток передається конфіденційною інформацією.
Повертає локальний порт, до якого зв'язується цей одноліток.
String get_packet_ip() const 🔗
Повертає IP пульта дистанційного зв’язку, який надіслав останній пакет (тобто отримав PacketPeer.get_packet() або PacketPeer.get_var()).
Повертає порт віддалених однолітків, який відправив останній пакет (тобто отримав PacketPeer.get_packet() або PacketPeer.get_var()).
Повертаємо вашу увагу на те, чи є це PacketPeerUDP, пов'язаної з адресою та може отримувати пакети.
bool is_socket_connected() const 🔗
Повертаємо true, якщо розетка UDP відкрита і підключена до віддаленої адреси. Подивитися connect_to_host().
Error join_multicast_group(multicast_address: String, interface_name: String) 🔗
Приєднується до групи мультикастів, зазначеної multicast_address з використанням інтерфейсу, визначеного interface_name.
Ви можете приєднатися до тієї ж групи з декількома інтерфейсами. Використовуйте IP.get_local_interfaces(), щоб дізнатися, які доступні.
Примітка: Деякі пристрої для Android можуть знадобитися CHANGE_WIFI_MULTICAST_STATE дозвіл на багатокамерну роботу.
Error leave_multicast_group(multicast_address: String, interface_name: String) 🔗
Видаляє інтерфейс, ідентифікований параметром interface_name, з групи багатоадресної розсилки, визначеної параметром multicast_address.
void set_broadcast_enabled(enabled: bool) 🔗
Увімкнути або вимкнути відправку трансляційних пакетів (наприклад, set_dest_address("255.255.255.255", 4343). Ця опція вимкнена за замовчуванням.
Примітка: Деякі пристрої Android можуть знадобитися CHANGE_WIFI_MULTICAST_STATE дозвіл і цей варіант, щоб бути ввімкнено, щоб отримати трансляційні пакети.
Error set_dest_address(host: String, port: int) 🔗
Налаштовує адреса призначення та порт для відправки пакетів та змінних. У разі необхідності ввімкнено доменне ім’я.
Примітка: set_broadcast_enabled() повинен бути включений до відправки пакетів на адресу трансляції (наприклад, 255.255.255.255).
Очікує на прибуття пакета на прив'язану адресу. Див. bind().
Примітка: wait() не може бути перервано після його виклику. Це можна вирішити, дозволивши іншій стороні надіслати певний пакет «пігулки смерті» таким чином:
socket = PacketPeerUDP.new()
# Сервер
socket.set_dest_address("127.0.0.1", 789)
socket.put_packet("Time to stop".to_ascii_buffer())
# Клієнт
while socket.wait() == OK:
var data = socket.get_packet().get_string_from_ascii()
if data == "Time to stop":
return
var socket = new PacketPeerUdp();
// Сервер
socket.SetDestAddress("127.0.0.1", 789);
socket.PutPacket("Time to stop".ToAsciiBuffer());
// Клієнт
while (socket.Wait() == OK)
{
string data = socket.GetPacket().GetStringFromASCII();
if (data == "Time to stop")
{
return;
}
}