1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/RockChin-RFTX2

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RFTX2 lib

README | 中文文档

Структура папок

  • src: папка для хранения исходных кодов.
  • lib: папка для хранения зависимостей.

Среда разработки

vscode с расширениями Java на jdk11.

Пакет

  • com.rftx.auth предоставляет интерфейс аутентификации и метод TokenAuthentication по умолчанию для создания соединения.
  • com.rftx.conn содержит обработчик control conn и обработчик transfer conn.
  • com.rftx.core включает RFTXServer и RFTXClient.
  • com.rftx.exception — классы исключений.
  • com.rftx.listener — интерфейсы прослушивателя событий, которые могут быть реализованы вызывающей стороной.
  • com.rftx.util — классы инструментов.
  • com.rftx.test — тесты.

Важные классы

  • com.rftx.core.RFTXHost определяет объект RFTX host. Объект RFTXHost необходим независимо от того, является ли вызывающий объект сервером, клиентом или и тем, и другим. RFTXHost хранит все управляющие соединения и передающие соединения, принятые RFTXServer или созданные RFTXClient.
  • com.rftx.core.RFTXServer определяет программу RFTX server, которая содержится в объекте RFTXHost и создаётся указанным методом. RFTXServer — это поток, который принимает соединения блокирующим образом и сохраняет соединения в списке соединений ArrayList объекта RFTXHost.
  • com.rftx.core.RFTXClient определяет клиентскую программу RFTX, которая содержится в RFTXHost и создана указанным методом; RFTXClient содержит метод connect(String addr, int port), который используется для подключения программы RFTXServer, запущенной на указанном порту указанного адреса.

Как библиотека RFTX обрабатывает соединения

Объект RFTXHost содержит объекты RFTXServer и RFTXClient. Вызываются конкретные методы для инициализации двух объектов. RFTXHost содержит три списка Connection ArrayLists, в которых хранятся Control Conns, Transfer Conns и Unknown Conns. В объекте rftxhost, независимо от того, создано ли соединение rftxclient или принято rftxserver, оно будет сохранено в соответствующем списке. Это означает, что соединения, управляемые rftxserver и rftxclient в одном и том же rftxhost, являются общими.

  • Control Conns: после того как клиент активно подключится к серверу, на обоих хостах будет создано управляющее соединение для отправки команд отправки и получения файлов.
  • Transfer Conns: каждое передающее соединение соответствует задаче передачи, которая используется для отправки и получения файлов, будет автоматически создано базовой программой.
  • Unknown Conns: когда сервер принимает соединение, он временно по умолчанию устанавливает его как неизвестное соединение, а затем соединение (инициированное клиентом) отправляет идентификационный код, чтобы сообщить серверу о личности соединения.

Как использовать

0. Создайте объект RFTXHost

Обычно в программе требуется создать только один объект RFTXHost.

RFTXHost host=new RFTXHost("hostName");//Создать объект RFTXHost с именем hostname
  • hostname: будет использоваться для идентификации друг друга при установлении соединения с одноранговым узлом. В отличие от токена, имя хоста не будет проходить проверку подлинности и будет использоваться только в качестве идентификатора.
  • Вы можете вызвать метод initserver(int port) или метод initclient() объекта RFTXHost, чтобы инициализировать объект RFTXServer или объект RFTXClient в объекте RFTXHost.
  • Соответствующие методы init должны быть вызваны до того, как можно будет использовать серверный или клиентский объект. В противном случае будет выброшено исключение NullPointerException.
  • В объекте RFTXHost вы можете создать только RFTXServer или только RFTXClient, или создать два объекта одновременно.

1. Создание или принятие управляющих соединений

Сервер

Предположим, что определён объект host:RFTXHost (это необходимо).

host.initServer(3000);//Открыть порт 3000 на этом хосте в качестве служебного порта RFTXServer. Пожалуйста, убедитесь, что указанный порт этого хоста доступен извне
host.getAuthenticator.addValidToken("tester","TestToken");//Добавить действительный токен с именем tester и значением TestToken
host.server.start();//Вызвать этот метод, чтобы запустить поток слушателя для RFTXServer
  • RFTXHost содержит только один объект RFTXServer. Повторный вызов initserver(int port) приведёт к переопределению. Созданный rftxserver вызывает непредвиденные исключения, особенно когда сервер начинает прослушивание.

— Можно добавить любое количество легальных токенов. Когда клиент подключается, токен подключения клиента отправляется для аутентификации.
— Базовая программа использует HashMap для хранения действительного токена, что означает, что одновременно может существовать только один действительный токен с тем же именем.

Клиент

Предположим, что определён объект host:RFTXHost (и это необходимо).

host.initClient();//Инициализируем объект клиента в объекте хоста
host.getAuthenticator().setConnToken("TestToken");//Устанавливаем токен, используемый для подключения клиента, в «TestToken»
host.client.connect("testserver.ts",3000);//Используем объект клиента для подключения к порту 3000 сервера (адрес: testserver.ts)

На данный момент нет метода удаления объекта lient в объекте host. Если токен соединения не установлен или установленный токен не включён в список токенов противоположного RFTXServer, соединение будет автоматически разорвано сразу после установления соединения.

2. Передача файла

post

host.post(String peerName, String taskToken, String localFile, String remoteFile);

peerName — предоставляет имя хоста однорангового узла для установки цели. taskToken — токен задачи этой задачи публикации. localFile — локальный файл, файл для отправки. remoteFile — удалённый файл, путь сохранения и имя файла на узле.

Например:

host.post("testServer","taskToken000","product/jar/rftx.jar","receive/rftx-lib.jar")

get

host.get(String peerName, String taskToken, String localFile, String remoteFile);

peerName — предоставить имя хоста узла источника для установки исходного хоста. taskToken — токен задачи этого задания получения. localFile — путь хранения полученного файла, расположенный локально. remoteFile — путь и имя файла узла.

Например:

host.get("testServer","taskToken000","product/jar/rftx.jar","receive/rftx-lib.jar")

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

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека для реализации двусторонней передачи файлов между клиентом и сервером. Развернуть Свернуть
Java
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/RockChin-RFTX2.git
git@api.gitlife.ru:oschina-mirror/RockChin-RFTX2.git
oschina-mirror
RockChin-RFTX2
RockChin-RFTX2
main