Skip to content

Библиотека для простого создания TCP клиент-сервер соединения, с использованием своего протокола EasyTCP.

License

Notifications You must be signed in to change notification settings

Camyil-89/EasyTCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

EasyTCP

Библиотека для создания простого клиент-серверного приложения. Эта библиотека решает такую проблему как отправка больших пакетов, путем использования своего протокола передачи данных (работает поверх TCP). Большинство библиотек которые есть в интернете для работы с TCP, ни на что кроме создания чата не пригодны в большинстве своем. EasyTCP способно передавать большие объемы данных (один пакет размером в 2 гб (2130702268 байт примерно)), производить сериализацию классов и передачу их.

Протокол EasyTCP

Протокол EasyTCP работает поверх TCP что обеспечивает целостность доставки данных. Позволяет передавать с помощью 1 пакета данные объемом ~ 2 ГБайта (2147483647 Байт).

Примечание: на уровне приложения можно передавать до 2 гб, но на более низком уровне, пакет будет фрагментироваться на более маленькие. Это необходимо учитывать если вы хотите построить максимально производительную систему.

Структура заголовка пакета EasyTCP. Общая длина заголовка 13 байт.

1 - 8 Байт
Version (1 Байт) DataSize (4 Байта) UID (4 Байта)
UID (перенос) Mode (1 Байт) Type (1 Байт) TypePacket (2 Байта)
Данные (0 - 2147483647 Байт)

Описание параметров заголовка EasyTCP.

Параметры Размер (Байт) Описание
Version 1 Версия протокола EasyTCP
DataSize 4 Длина данных после заголовка
UID 4 Уникальный идентификатор для обработки ожидаемых пакетов.
Mode 1 Определяет режим передачи пакета.
Hidden (0) - не уведомляет клиента о количестве считанных байт из отправленного клиентом пакета.
Info (1) - уведомляет клиента о количестве считанных байт из отправленного клиентом пакета

Не используется, является запасным.
Type 1 Тип пакета который передается. Все служебные пакеты начинаются с 1 по 6, 0 - передача клиентского пакета
TypePacket 2 Указывает что это за пакет для PacketEntityManager, 0 - зарезервирован для не определенного пакета.
Общая длина заголовка пакета 13

Client

Объяснения функционала (может быть не точным, из за внесения изменений в функции).

Connect

Подключение к серверу

public bool Connect(string host, int port, ISerialization serialization = null)

Close

Закрытие подключения

public void Close()

EnableSsl

Передается сертификат и можно указать проверять или нет данный сертификат.

public void EnableSsl(X509Certificate certificate, bool IsValidateCertificate)

Send

Отправляет пакет на сервер и не ждет ответа.

public void Send(object obj)

SendAndWaitResponse

Отправляет пакет и ждет ответ от сервера.

public T SendAndWaitResponse<T>(object obj, int timeout = int.MaxValue)

SendAndReceiveInfo

Отправляет пакет и получает ответ от сервера о том сколько байт он считал с этого пакета, и после когда сервер отправляет ответ, так же уведомляет сколько прочитал.

Не актуально на данный момент. !!!Увеличивает накладные расходы, чтобы их уменьшить увеличьте данный параметр у сервера BlockSizeForSendInfoReceive (его можно и у клиента задать)!!!

public IEnumerable<ResponseInfo<T>> SendAndReceiveInfo<T>(T obj, int timeout = int.MaxValue)

About

Библиотека для простого создания TCP клиент-сервер соединения, с использованием своего протокола EasyTCP.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages