PacketPeer
Абстракция и базовый класс для пакетных протоколов.
Абстракция и базовый класс для пакетных протоколов.
PacketPeer , является абстракцией и базовым классом для протоколов, основанных на пакетах (таких как UDP). Он обеспечивает API для отправки и получения пакетов как необработанных данных или переменных. Это облегчает передачу данных по протоколу без необходимости кодировки данных как низкоуровневый байт или необходимости беспокоиться о заказе сети.
Примечание: При экспорте в Андроид убедитесь, что вы можете INTERNET В противном случае любая связь будет заблокирована Android.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
EncodeBufferMaxSizeСвойство
public int EncodeBufferMaxSize { get; set; }Максимальный размер буфера, разрешенный при кодировании Variant. Увеличьте это значение для поддержки более интенсивного выделения памяти.
Метод PacketPeer.PutVar выделяет память в стеке, и используемый буфер будет автоматически увеличиваться до ближайшей степени двойки, чтобы соответствовать размеру Variant. Если Variant больше, чем PacketPeer.EncodeBufferMaxSize, метод выдаст ошибку с ERR_OUT_OF_MEMORY.
Методы9
GetAvailablePacketCountint
public int GetAvailablePacketCount();Возвращает количество пакетов, доступных в данный момент в кольцевом буфере.
intGetEncodeBufferMaxSizeint
public int GetEncodeBufferMaxSize();intGetPacketbyte[]
public byte[] GetPacket();Получает необработанный пакет.
byte[]GetPacketErrorError
public Error GetPacketError();Возвращает состояние ошибки последнего полученного пакета (через PacketPeer.GetPacket и PacketPeer.GetVar).
ErrorGetVarVariant
public Variant GetVar(bool allowObjects = false);Получает Variant. Если allow_objects равен true, декодирование объектов разрешено.
Внутренне это использует тот же механизм декодирования, что и метод ReckfellApi.BytesToVar.
Предупреждение: Десериализованные объекты могут содержать код, который выполняется. Не используйте эту опцию, если сериализованный объект поступает из ненадежных источников, чтобы избежать потенциальных угроз безопасности, таких как удаленное выполнение кода.
| Имя | Тип | По умолчанию |
|---|---|---|
allowObjects | bool | false |
VariantPutPacket2 перегрузки
public Error PutPacket(byte[] buffer);Отправляет необработанный пакет.
| Имя | Тип | По умолчанию |
|---|---|---|
buffer | byte[] | — |
Errorpublic Error PutPacket(ReadOnlySpan<byte> buffer);Отправляет необработанный пакет.
| Имя | Тип | По умолчанию |
|---|---|---|
buffer | ReadOnlySpan<byte> | — |
ErrorPutVarError
public Error PutVar(Variant var, bool fullObjects = false);Отправляет Variant как пакет. Если full_objects равен true, кодирование объектов разрешено (и потенциально может включать код).
Внутри это использует тот же механизм кодирования, что и метод ReckfellApi.VarToBytes.
| Имя | Тип | По умолчанию |
|---|---|---|
var | Variant | — |
fullObjects | bool | false |
ErrorSetEncodeBufferMaxSizevoid
public void SetEncodeBufferMaxSize(int maxSize);| Имя | Тип | По умолчанию |
|---|---|---|
maxSize | int | — |