PacketPeerUdp
Одноранговый UDP-пакет.
Одноранговый UDP-пакет.
UDP-пакетный узел. Может использоваться для отправки и получения необработанных UDP-пакетов, а также Variant-ы.
Пример: Отправка пакета:
Пример: Прослушивание пакетов:
Примечание: При экспорте в Андроид убедитесь, что вы можете INTERNET В противном случае любая связь будет заблокирована Android.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
PacketPeerUdpКонструктор
public PacketPeerUdp();Методы13
BindError
public Error Bind(int port, string bindAddress = "*", int recvBufSize = 65536);Связывает этот PacketPeerUdp с указанным port и bind_address с размером буфера recv_buf_size, что позволяет ему принимать входящие пакеты.
Если bind_address установлен на "*" (по умолчанию), одноранговый узел будет привязан ко всем доступным адресам (как IPv4, так и IPv6).
Если bind_address установлен на "0.0.0.0" (для IPv4) или "::" (для IPv6), одноранговый узел будет привязан ко всем доступным адресам, соответствующим этому типу IP.
Если bind_address установлен на любой допустимый адрес (например, "192.168.1.101", "::1" и т. д.), одноранговый узел будет привязан только к интерфейсу с этим адресом (или потерпит неудачу, если интерфейс с указанным адресом не существует).
| Имя | Тип | По умолчанию |
|---|---|---|
port | int | — |
bindAddress | string | "*" |
recvBufSize | int | 65536 |
ErrorClosevoid
public void Close();Закрывает базовый UDP-сокет PacketPeerUdp.
ConnectToHostError
public Error ConnectToHost(string host, int port);Вызов этого метода подключает этот одноранговый узел UDP к заданной паре host/port. UDP на самом деле не требует установления соединения, поэтому эта опция означает только то, что входящие пакеты с разных адресов автоматически отбрасываются, а исходящие пакеты всегда отправляются на подключенный адрес (будущие вызовы PacketPeerUdp.SetDestAddress не разрешены). Этот метод не отправляет никаких данных удаленному одноранговому узлу, для этого используйте PacketPeer.PutVar или PacketPeer.PutPacket, как обычно. См. также UdpServer.
Примечание: Подключение к удаленному одноранговому узлу не помогает защититься от вредоносных атак, таких как подмена IP-адреса и т. д. Подумайте об использовании метода шифрования, такого как TLS или DTLS, если вы чувствуете, что ваше приложение передает конфиденциальную информацию.
| Имя | Тип | По умолчанию |
|---|---|---|
host | string | — |
port | int | — |
ErrorGetLocalPortint
public int GetLocalPort();Возвращает локальный порт, к которому привязан данный одноранговый узел.
intGetPacketIPstring
public string GetPacketIP();Возвращает IP-адрес удаленного узла, отправившего последний пакет (который был получен с помощью PacketPeer.GetPacket или PacketPeer.GetVar).
stringGetPacketPortint
public int GetPacketPort();Возвращает порт удаленного узла, отправившего последний пакет (который был получен с помощью PacketPeer.GetPacket или PacketPeer.GetVar).
intIsBoundbool
public bool IsBound();Возвращает, привязан ли этот PacketPeerUdp к адресу и может ли он принимать пакеты.
boolIsSocketConnectedbool
public bool IsSocketConnected();Возвращает true, если сокет UDP открыт и подключен к удаленному адресу. См. PacketPeerUdp.ConnectToHost.
boolJoinMulticastGroupError
public Error JoinMulticastGroup(string multicastAddress, string interfaceName);Присоединяется к группе многоадресной рассылки, указанной multicast_address, используя интерфейс, идентифицированный interface_name.
Вы можете присоединиться к той же группе многоадресной рассылки с несколькими интерфейсами. Используйте IP.GetLocalInterfaces, чтобы узнать, какие из них доступны.
Примечание: Для работы многоадресной рассылки некоторым устройствам Android может потребоваться разрешение CHANGE_WIFI_MULTICAST_STATE.
| Имя | Тип | По умолчанию |
|---|---|---|
multicastAddress | string | — |
interfaceName | string | — |
ErrorLeaveMulticastGroupError
public Error LeaveMulticastGroup(string multicastAddress, string interfaceName);Удаляет интерфейс, идентифицированный interface_name, из группы многоадресной рассылки, указанной multicast_address.
| Имя | Тип | По умолчанию |
|---|---|---|
multicastAddress | string | — |
interfaceName | string | — |
ErrorSetBroadcastEnabledvoid
public void SetBroadcastEnabled(bool enabled);Включите или отключите отправку широковещательных пакетов (например, set_dest_address("255.255.255.255", 4343). Эта опция отключена по умолчанию.
Примечание: Для некоторых устройств Android может потребоваться разрешение CHANGE_WIFI_MULTICAST_STATE и включение этой опции для приема широковещательных пакетов.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetDestAddressError
public Error SetDestAddress(string host, int port);Устанавливает адрес назначения и порт для отправки пакетов и переменных. Имя хоста будет разрешено с помощью DNS, если необходимо.
Примечание: PacketPeerUdp.SetBroadcastEnabled должен быть включен перед отправкой пакетов на широковещательный адрес (например, 255.255.255.255).
| Имя | Тип | По умолчанию |
|---|---|---|
host | string | — |
port | int | — |
ErrorWaitError
public Error Wait();Ожидает прибытия пакета на привязанный адрес. См. PacketPeerUdp.Bind.
Примечание: PacketPeerUdp.Wait не может быть прерван после вызова. Это можно обойти, разрешив другой стороне отправить определенный пакет «пилюли смерти», например:
var socket = new PacketPeerUdp();
// Server
socket.SetDestAddress("127.0.0.1", 789);
socket.PutPacket("Time to stop".ToAsciiBuffer());
// Client
while (socket.Wait() == OK)
{
string data = socket.GetPacket().GetStringFromASCII();
if (data == "Time to stop")
{
return;
}
}Error