К содержимому
~/wertyqqs
Все навыки
Навык 03 / 06

C++

Базовый уровень, активно изучаю: сокеты, многопоточность, CMake.

Уровень
Базовый
Опыт
1 год
Проекты
1 в портфолио

Подход

Изучаю C++ на практике. Первый серьёзный проект — сканер портов на C++20 по образцу nmap: многопоточность, RAII-обёртки над сокетами, SYN-скан через raw-сокеты, unit-тесты и CI.

Что входит

  • RAII и управление ресурсами
  • Многопоточность (std::thread)
  • Сетевое программирование
  • Тесты и CI

Стек и инструменты

ЯзыкC++20
СборкаCMake
ТестыGoogleTest
СетьPOSIX sockets

Пример кода

1class Socket {
2 public:
3 explicit Socket(int type = SOCK_STREAM, int protocol = 0)
4 : fd_(socket(AF_INET, type, protocol)) {}
5
6 ~Socket() {if (fd_ >= 0) close(fd_);}
7 int fd() const { return fd_; }
8
9 Socket(const Socket&) = delete;
10 Socket& operator=(const Socket&) = delete;
11
12 private:
13 int fd_;
14};
Из portscanner: RAII-обёртка — сокет закрывается сам, когда выходит из области видимости.

В проектах

Где я это применял

portscanner.app

portscanner

Open source · 2026

Open source — Автор

Сканер портов на C++20, написанный с нуля по образцу nmap: находит открытые порты на сервере и определяет, какие сервисы на них работают.

  • SYN-скан: TCP-пакеты собираются вручную через raw-сокеты
  • Определение сервисов по баннерам — SSH, веб-сервер и его версия
  • Три состояния порта: открыт, закрыт, за файрволом

50 потоков: 100 портов за 2 с вместо 102

  • C++20
  • POSIX/raw sockets
  • std::thread
  • CMake
  • GoogleTest
  • GitHub Actions

Нужен C++ для вашей задачи? Давайте обсудим.

Обсудить проект