https://github.com/andezion/retromessenger
https://github.com/andezion/retromessenger
ciphers cpp cryptography messenger retro wxwidgets
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/andezion/retromessenger
- Owner: Andezion
- Created: 2025-10-05T21:21:46.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2026-01-12T13:04:44.000Z (6 months ago)
- Last Synced: 2026-01-12T19:55:46.636Z (6 months ago)
- Topics: ciphers, cpp, cryptography, messenger, retro, wxwidgets
- Language: C++
- Homepage:
- Size: 19.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RetroMessenger
P2P (peer-to-peer) мессенджер на C++ с графическим интерфейсом на базе wxWidgets и прямыми соединениями через Boost.Asio.
## Особенности
- **Прямые P2P соединения** - клиенты соединяются напрямую друг с другом без централизованного сервера
- **Система приглашений** - безопасное установление соединений через обмен приглашениями
- **Множественные чаты** - поддержка нескольких одновременных P2P чатов
- **Автоматическая смена ID** - генерация нового уникального ID после каждого соединения для приватности
- **Графический интерфейс** - удобный GUI на wxWidgets с вкладками для разных чатов
## Компоненты
- **RetroMessenger** - GUI P2P клиент на wxWidgets
- **ChatServer** - опциональный централизованный сервер (для группового чата)
## Сборка
```bash
cd build
cmake ..
make
```
## Запуск
### P2P режим (рекомендуется)
```bash
cd build
./RetroMessenger
```
Каждый клиент автоматически создает свой listening порт. Порт отображается в заголовке окна.
## Зависимости
- **CMake** >= 3.10
- **C++17** компилятор (g++, clang++)
- **wxWidgets** >= 3.0
- **Boost** (components: system)
- **Threads**
### Установка зависимостей
Ubuntu/Debian:
```bash
sudo apt install build-essential cmake libwxgtk3.0-gtk3-dev libboost-system-dev
```
## Использование
### Создание P2P соединения
1. Запустите первый клиент: `./RetroMessenger`
- Запомните порт (например, 39181) и имя пользователя (например, User1)
2. Запустите второй клиент в другом терминале
- Запомните его порт (например, 37299) и имя (например, User2)
3. В первом клиенте нажмите **"Start New Chat"**:
- Введите имя пользователя второго клиента: `User2`
- Введите порт второго клиента: `37299`
- Нажмите OK
4. Второй клиент получит приглашение - нажмите **"Yes"** для принятия
5. Теперь оба клиента могут обмениваться сообщениями!
### Множественные чаты
- Каждый клиент может иметь несколько активных P2P соединений одновременно
- Переключайтесь между чатами в списке слева
- После установления соединения ваш User ID автоматически меняется для приватности
## Архитектура
### P2P клиент (RetroMessenger)
- **Асинхронный сетевой модуль** на Boost.Asio
- **Listening acceptor** - принимает входящие соединения от других клиентов
- **P2P сессии** - управление множественными прямыми соединениями
- **Протокол приглашений**:
- `INVITE:username:user_id` - запрос на установление соединения
- `ACCEPT:username:user_id` - подтверждение соединения
- `REJECT` - отклонение приглашения
- **Сообщения** - текстовые данные, разделенные символом новой строки `\n`
- **GUI на wxWidgets** - интуитивный интерфейс с поддержкой вкладок
### Безопасность
- Каждый клиент генерирует уникальный ID при запуске
- ID автоматически обновляется после каждого нового соединения
- Прямые P2P соединения без посредников