Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Кросс‑платформенный асинхронный менеджер сетевых соединений на C++17 с поддержкой кастомных заголовков, аргументов и параметров. Использует Boost.Asio, nlohmann/json, spdlog.

License

Notifications You must be signed in to change notification settings

terax1s/Socknet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⛓️ Socknet

Socknet — это кросс-платформенный асинхронный менеджер сетевых соединений на C++17
с поддержкой кастомных заголовков, аргументов и параметров.

Использует:


🚀 Возможности

  • Поддержка TCP и (опционально) WebSocket (BUILD_WITH_WEBSOCKET)
  • Гибкая настройка соединений: кастомные заголовки, аргументы и параметры
  • Асинхронная модель (Boost.Asio)
  • Работает на Linux, Windows, macOS
  • Логирование через spdlog с уровнями: trace, debug, info, warn, error
  • Unit-тесты (Boost.Test) + мокинг сетевых вызовов

📦 Установка и сборка

  1. Клонировать репозиторий:

    git clone https://github.com/terax1s/Socknet.git
    cd Socknet
  2. Установить зависимости:

    • Boost (system, asio, unit_test_framework)
    • nlohmann/json
    • spdlog
    • CMake ≥ 3.20

    Рекомендуется использовать vcpkg:

    vcpkg install boost-system boost-asio boost-test nlohmann-json spdlog
  3. Сборка:

    cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="path/to/vcpkg.cmake"          -DBUILD_WITH_WEBSOCKET=ON          -DBUILD_TESTS=ON          -DENABLE_LOGGING=ON
    
    cmake --build build

🔧 Опции сборки

Флаг По умолчанию Описание
BUILD_WITH_WEBSOCKET OFF Поддержка WebSocket (Boost.Beast)
BUILD_TESTS ON Сборка unit-тестов
ENABLE_LOGGING ON Логирование через spdlog

🧪 Тестирование

cd build
ctest

💻 Пример использования

#include "socknet/core/socket_manager.hpp"
using namespace socknet;

int main() {
    socket_manager mgr;
    custom_headers_map headers { {"protocol", "tcp"} };

    mgr.connect("google.com", 80, headers);
    mgr.send("Hello", {});
    auto resp = mgr.receive(3000, {});
    mgr.disconnect();
}

About

Кросс‑платформенный асинхронный менеджер сетевых соединений на C++17 с поддержкой кастомных заголовков, аргументов и параметров. Использует Boost.Asio, nlohmann/json, spdlog.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published