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

OSCHINA-MIRROR/zklmiao-CppNet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 20:27 b7c2321

CppNet

Введение в CppNet

Это простая кроссплатформенная программа TCP/UDP-сервер, репозиторий синхронизирует прогресс каждой версии итерации.

EasyTcpClientGO, версии 1.0–1.2: простая программа для однопользовательского сервера winsocket.

Версии 1.3–1.4: добавлены кроссплатформенные функции, введена модель ввода-вывода с использованием select I/O, многопутевая модель, добавлен буфер приёма на стороне сервера, добавлен буфер приёма и буфер сообщений на стороне клиента, повышена общая производительность сервера и клиента. На Windows сервер может обрабатывать до 64 (на Linux — до 1024) клиентских подключений и данных отправки и получения. Один клиент на Windows может иметь до 64 (на Linux до 1024) одновременных подключений к серверу и осуществлять простую отправку и получение данных.

Версия 1.5: преодолено ограничение на количество подключений в Windows с помощью select, добавлена поддержка параллельных подключений на стороне сервера.

Версия 1.6: изменена архитектура сервера, внедрена модель производителя-потребителя, разделены приём подключений и модули отправки данных. Сервер использует многопоточность и буфер подключений, что ускоряет обработку подключений и включает высокоточный таймер, сервер может отображать в реальном времени текущее количество подключённых клиентов и количество пакетов данных, обрабатываемых каждую секунду.

[Ошибка: при отключении клиента количество клиентов на сервере не обновляется своевременно.]

Версия 1.7: внедрён механизм событийного проксирования, при отключении клиента поток обработки сообщений уведомляет основной поток об отключении клиента и обновляет список клиентов и их количество.

Future: планируется увеличить размер буфера отправки сообщений на сервере. Разделить бизнес-логику, отделить отправку сообщений от приёма.

1.8.0: добавлен буфер отправки сообщений, сообщения отправляются порциями, когда количество полученных сообщений превышает размер настроенного буфера отправки.

[Ошибка: нет функции тайм-аута отправки, если сервер не получает сообщения и общее количество полученных сообщений меньше размера буфера отправки, то полученные сообщения могут бесконечно оставаться в буфере отправки.]

Future: добавить функцию тайм-аута отправки для отправки данных даже при отсутствии новых сообщений после истечения времени ожидания.

1.8.1: добавлены класс задачи отправки, очередь задач отправки, очередь отправки и поток отправки, отправка отделена от других функций.

1.8.3: добавлено сердцебиение, время ожидания по умолчанию составляет 300 секунд, клиенты автоматически отключаются при отсутствии данных.

1.8.5: поддерживается поток байтов.

1.8.6–2.0: оптимизирована структура кода с использованием Select для поддержки C10K.

2.1: настраиваемый буфер данных.

2.2: добавлена облегчённая система логирования.

2.3: улучшена система логирования.

2.4: поддержка запуска программы с помощью командного скрипта, оптимизация Select с пользовательским FD_SET.

2.5: использование Epoll для поддержки C10k.

2.6: использование IOCP для поддержки C10k.

Руководство по использованию

  1. Скачать.
  2. Распаковать.
  3. Запустить EasyTcpServer.
  4. Запустить EasyTcpClient.

Инструкции по использованию

  1. Порт по умолчанию: 4567.
  2. IP-адрес сервера по умолчанию: 127.0.0.1.
  3. Запуск из командной строки: Windows: server.exe/client.exe ip port n [n: 1 — максимальное количество подключений для сервера; 2 — максимальное количество подключений для клиента]. Linux/Unix: ./server./client ip port n [n: 1 — максимальное количество подключений для сервера; 2 — максимальное количество подключений для клиента].

Описание демонстрационной программы

В папке «Демонстрационная программа» находится файл EasyTCP, который является тестовой программой сетевого движка. Для запуска нужно дважды щёлкнуть на «EasyTcpServer.exe» или «EasyTcpClient».

По умолчанию используется IP-адрес 127.0.0.1, порт 4567, программа настроена на работу в режиме клиента («EasyTcpClient») только для отправки данных и в режиме сервера («EasyTcpServer») только для приёма данных. По умолчанию размер отправляемых данных составляет 100 байт, а частота отправки — 10 пакетов в секунду. По умолчанию включена система логирования и установлено 4 потока. По умолчанию имитируется подключение 4 * 2500 клиентов.

Можно запустить программу с помощью скрипта. Для этого нужно дважды щёлкнуть на файле «EasyTcpServer.bat», чтобы запустить сервер, и на файле «EasyTcpClient.bat», чтобы запустить имитацию клиента.

По умолчанию используются IP-адрес 127.0.0.1 и порт 4567. Программа настроена на двустороннюю передачу данных между клиентом и сервером. Размер отправляемых данных по умолчанию составляет 100 байт, частота отправки — 10 пакетов в секунду, включена система логирования, установлено 4 потока, имитируется подключение 4 * 2500 клиентов. Подробные настройки можно найти в комментариях к скрипту, открыв его с помощью текстового редактора, например Notepad.

Участие в проекте

  1. Форк этого репозитория.
  2. Создать ветку Feat_xxx.
  3. Отправить код.
  4. Создать запрос на вытягивание.

Специальные навыки

  1. Использование Readme_XXX.md для поддержки разных языков, таких как Readme_en.md и Readme_zh.md.
  2. Официальный блог Gitee [blog.gitee.com].
  3. Можно использовать адрес [https://gitee.com/explore] для поиска интересных проектов на Gitee.
  4. GVP (Gitee Value Project) — это список лучших проектов с открытым исходным кодом на Gitee, отобранных на основе их ценности.
  5. Руководство по использованию Gitee [https://gitee.com/help].
  6. Лица Gitee — это раздел, посвящённый демонстрации талантов участников Gitee [https://gitee.com/gitee-stars/].

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/zklmiao-CppNet.git
git@api.gitlife.ru:oschina-mirror/zklmiao-CppNet.git
oschina-mirror
zklmiao-CppNet
zklmiao-CppNet
master