{"id":19325444,"url":"https://github.com/krypt0nn/bpnlib","last_synced_at":"2026-06-22T10:32:02.237Z","repository":{"id":144045189,"uuid":"175850118","full_name":"krypt0nn/BPNLib","owner":"krypt0nn","description":"Инструмент упрощения связи между компьютерами","archived":false,"fork":false,"pushed_at":"2020-01-12T16:50:57.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-24T06:16:59.469Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krypt0nn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-15T15:54:28.000Z","updated_at":"2020-01-03T15:25:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"daa1b3fe-a577-43a0-a123-09d76535e638","html_url":"https://github.com/krypt0nn/BPNLib","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/krypt0nn/BPNLib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krypt0nn%2FBPNLib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krypt0nn%2FBPNLib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krypt0nn%2FBPNLib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krypt0nn%2FBPNLib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krypt0nn","download_url":"https://codeload.github.com/krypt0nn/BPNLib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krypt0nn%2FBPNLib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34645681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T02:10:06.612Z","updated_at":"2026-06-22T10:32:02.213Z","avatar_url":"https://github.com/krypt0nn.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enfesto BPN\n**Enfesto BPN** - проект для упрощённой реализации системы обмена данными между компьютерами. Представлен в виде **C#** библиотеки\n\nОсновной проект *(сама библиотека)* находится в папке **Enfesto BPN Library**. Там же по пути **Enfesto BPN Library/bin/Release** *(или **Enfesto BPN Library/bin/Debug**)* вы можете найти собранный вариант библиотеки\n\n## Работа с библиотекой\nВесь функционал библиотеки расположен в пространстве имён **BPN**. В настоящий момент в библиотеке имеется **3** объекта:\n\n1. **BPNClient** - клиент для базовой реализации системы общения\n2. **BPNTunnel** - система реализации туннельного соединения\n3. **BPNPool** - система реализации хранилища соединений\n\nА теперь по-порядку\n\n### BPNClient\n\nМетод | Аргументы | Вывод | Описание\n------|-----------|-------|---------\n***[конструктор]*** | | | Создание объекта клиента\n| | string **name**, *[int **port** = **42569**]*\n**Listen** | *[bool **infinity** = **false**]* | | Прослушивание соединений\n**Send** | string **ip**, string **data** | **bool** - статус отправки данных | Отправка данных другому клиенту\n| | string **ip**, int **port**, string **data**\n**Push** | string **ip**, string **data** | | Бесконечные попытки отправить данные другому клиенту\n| | string **ip**, int **port**, string **data**\n**Get** | | **List\u003cDictionary\u003cstring, string\u003e\u003e** - список ассоциативных массивов полученных данных | Получение списка всех полученных текущим клиентом данных\n| | string **name** | | Получение списка всех полученных текущим клиентом данных от пользователя с именем **name**\n**GetBy** | string **name**, string **value** | **List\u003cDictionary\u003cstring, string\u003e\u003e** - список ассоциативных массивов, подходящих под описание | Получение списка всех полученных текущим клиентом данных, поднодящих под описание item[**name**] = **value**\n**SetDataRecieveHandler** | Action\u003cDictionary\u003cstring, string\u003e\u003e **handler** | | Установка анонимной функции-обработчика получаемых клиентом данных\n**SetFlag** | string **flag** | | Установка флага - дополнительной информации в заголовок пакета\n\nПример использования *(консольный вариант клиент-серверного общения)*:\n\nКлиент\n```cs\nusing BPN;\n\nBPNClient Client = new BPNClient (\"SuperUser\");\n\nConsole.Write (\"Enter IP: \");\nstring IP = Console.ReadLine ();\n\nwhile (true)\n{\n    Console.Write (\"Enter message: \");\n    string Message = Console.ReadLine ();\n\n    Console.WriteLine (\"Message \" + (Client.Send (IP, Message) ? \"successfully sended\" : \"not sended :(\"));\n}\n```\n\nСервер\n```cs\nusing BPN;\n\nBPNClient Client = new BPNClient (\"SuperUser\");\n\nClient.SetDataRecieveHandler ((data) =\u003e {\n    Console.WriteLine (\"Recieved from \\\"\" + data[\"name\"] + \"\\\" (\" + data[\"ip\"] + \"): \" + data[\"data\"]);\n});\n\nClient.Listen (true);\n```\n\n### BPNTunnel\n\nТуннель предоставляет возможность отправки данных другому пользователю через цепочку... других пользователей. Так, к примеру, можно частично скрыть оригинального отправителя сообщения или отправить сообщения клиенту, к которому нет прямого доступа *(по примеру **VPN**; для этого лучше использовать мост, см. ниже)*\n\nМетод | Аргументы | Вывод | Описание\n------|-----------|-------|---------\n***[конструктор]*** | params string[] **ips** | | Создание объекта туннеля\n**SetName** | string **name** | | Установка имени отправителя данных\n**SetBridge** | string **ip** | | Установка моста - участника цепочки, который всегда будет в ней на первом месте\n**Send** | string **ip**, string **data** | **bool** - статус отправки данных первому участнику туннеля | Отправка данных по туннелю\n| | string **ip**, int **port**, string **data**\n**Push** | string **ip**, string **data** | | Бесконечные попытки отправить данные первому участнику туннеля\n| | string **ip**, int **port**, string **data**\n\nПример использования *(отправка данных через мост - другого клиента)*:\n\n```cs\nusing BPN;\n\nConsole.Write (\"Enter bridge IP: \");\n\nBPNTunnel Tunnel = new BPNTunnel ();\nTunnel.SetBridge (Console.ReadLine ());\n\nConsole.Write (\"Enter IP: \");\nstring IP = Console.ReadLine ();\n\nConsole.Write (\"Enter message: \");\nstring Message = Console.ReadLine ();\n\nTunnel.Send (IP, Message);\n```\n\n\u003e В конструкторе туннеля можно указать список **IP** адресов. Если параметр **RandomOrder** будет выставлен как **true** *(по умолчанию)*, то этот список будет случайно перемешан. Сообщение будет отправлено поочерёдно через каждого участника туннеля\n\n### BPNPool\n\nБассейн - это объект, предназначенный для хранения списка **IP** адресов клиентов и быстрой работой с ними. Он может упростить жизнь при разработке таких программ, как чатов\n\nМетод | Аргументы | Вывод | Описание\n------|-----------|-------|---------\n***[конструктор]*** | params string[] **ips** | | Создание объекта бассейна\n| | string **name**, params string[] **ips**\n| | string **name**, int **port**, params string[] **ips**\n**Send** | int **poolId**, string **data** | **bool** - статус отправки данных | Отправка данных участнику бассейна с индексом **poolId**\n**Push** | int **poolId**, string **data** | | Бесконечные попытки отправить данные участнику бассейна с индексом **poolId**\n**Broadcast** | string **data**, *[bool **push** = **false**]* | | Отправка данных всем участникам бассейна\n\nПример использования *(спам всем участникам бассейна пока они точно не получат сообщение)*:\n\n```cs\nusing BPN;\n\nBPNPool Pool = new BPNPool (\"SuperUser\", \"1.2.3.4\", \"2.3.6.8\", \"3.7.9.1\");\n\nPool.Broadcast (\"Hello, World!\", true);\n```\n\nВот и всё. Приятного использования! :3\n\nАвтор: [Подвирный Никита](https://vk.com/technomindlp). Специально для [Enfesto Studio Group](http://vk.com/hphp_convertation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrypt0nn%2Fbpnlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrypt0nn%2Fbpnlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrypt0nn%2Fbpnlib/lists"}