{"id":32745832,"url":"https://github.com/aalexuser/low-level-programming-3","last_synced_at":"2026-02-21T05:04:37.517Z","repository":{"id":217021888,"uuid":"742858120","full_name":"AaLexUser/low-level-programming-3","owner":"AaLexUser","description":null,"archived":false,"fork":false,"pushed_at":"2024-02-16T23:15:43.000Z","size":8402,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-03T17:11:57.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AaLexUser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-01-13T15:26:21.000Z","updated_at":"2024-01-13T15:27:36.000Z","dependencies_parsed_at":"2024-01-24T08:25:24.591Z","dependency_job_id":"374dada0-ae7d-4f3b-9b99-aeb86f267c6d","html_url":"https://github.com/AaLexUser/low-level-programming-3","commit_stats":null,"previous_names":["aalexuser/low-level-programming-3"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AaLexUser/low-level-programming-3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaLexUser%2Flow-level-programming-3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaLexUser%2Flow-level-programming-3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaLexUser%2Flow-level-programming-3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaLexUser%2Flow-level-programming-3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AaLexUser","download_url":"https://codeload.github.com/AaLexUser/low-level-programming-3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaLexUser%2Flow-level-programming-3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29674473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T03:11:15.450Z","status":"ssl_error","status_checked_at":"2026-02-21T03:10:34.920Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2025-11-03T17:06:56.084Z","updated_at":"2026-02-21T05:04:37.503Z","avatar_url":"https://github.com/AaLexUser.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LLP 3\n## Запуск\n```\nСервер (server)\ncd build\ncmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_BENCHMARK=OFF -DBUILD_TESTING=ON ..\nmake\n./db_exe\n\nКлиент (client)\ncd build\ncmake ..\nmake\n./lab3-client 127.0.0.1 8080\n```\n## Задание \nНа базе данного транспортного формата описать схему протокола обмена информацией и воспользоваться\nсуществующей библиотекой по выбору для реализации модуля, обеспечивающего его функционирование.\nПротокол должен включать представление информации о командах создания, выборки, модификации и\nудаления данных в соответствии с данной формой, и результатах их выполнения.\n\nИспользуя созданные в результате выполнения заданий модули, разработать в виде консольного приложения\nдве программы: клиентскую и серверную части. Серверная часть – получающая по сети запросы и операции\nописанного формата и последовательно выполняющая их над файлом данных с помощью модуля из первого\nзадания. Имя фала данных для работы получать с аргументами командной строки, создавать новый в случае\nего отсутствия. Клиентская часть – в цикле получающая на стандартный ввод текст команд, извлекающая из\nнего информацию о запрашиваемой операции с помощью модуля из второго задания и пересылающая её на\nсервер с помощью модуля для обмена информацией, получающая ответ и выводящая его в человеко-\nпонятном виде в стандартный вывод.\n\n## Порядок выполнения\n1. Изучить выбранную библиотеку\n   - Библиотека должна обеспечивать сериализацию и десериализацию с валидацией в соответствии со схемой\n   - Предпочтителен выбор библиотек, поддерживающих кодогенерацию на основе схемы\n   - Библиотека может поддерживать передачу данных посредством TCP соединения\n     - Иначе, использовать сетевые сокеты посредством API ОС\n   - Библиотека может обеспечивать диспетчеризацию удалённых вызовов\n     - Иначе, реализовать диспетчеризацию вызовов на основе информации о виде команды\n2. На основе существующей библиотеки реализовать модуль, обеспечивающий взаимодействие\n   - Описать схему протокола в поддерживаемом библиотекой формате\n     - Описание должно включать информацию о командах, их аргументах и результатах\n     - Схема может включать дополнительные сущности (например, для итератора)\n   - Подключить библиотеку к проекту и сформировать публичный интерфейс модуля с использованием встроенных или сгенерированных структур данных используемой библиотеки\n      - Поддержать установление соединения, отправку команд и получение их результатов\n      - Поддержать приём входящих соединений, приём команд и отправку их результатов\n    - Реализовать публичный интерфейс посредством библиотеки в соответствии с п1\n3. Реализовать серверную часть в виде консольного приложения\n   - В качестве аргументов командной строки приложение принимает:\n     - Адрес локальной конечной точки для прослушивания входящих соединений\n     - Имя файла данных, который необходимо открыть, если он существует, иначе создать\n   - Работает с файлом данных посредством модуля из задания 1\n   - Принимает входящие соединения и взаимодействует с клиентами посредством модуля из п2\n   - Поступающая информация о запрашиваемых операциях преобразуется из структур данных модуля взаимодействия к структурам данных модуля управления данными и наоборот\n4. Реализовать клиентскую часть в виде консольного приложения\n    - В качестве аргументов командной строки приложение принимает адрес конечной точки для подключения\n    - Подключается к серверу и взаимодействует с ним посредством модуля из п2\n    - Читает со стандартного ввода текст команд и анализирует их посредством модуля из задания 2\n    - Преобразует результат разбора команды к структурам данных модуля из п2, передаёт их для обработки на сервер, возвращаемые результаты выводит в стандартный поток вывода\n  \n5. Результаты тестирования представить в виде отчёта, в который включить:\n   - В части 3 привести пример сеанса работы разработанных программ\n   - В части 4 описать решение, реализованное в соответствии с пп.2-4\n   - В часть 5 включить составленную схему п.2а\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faalexuser%2Flow-level-programming-3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faalexuser%2Flow-level-programming-3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faalexuser%2Flow-level-programming-3/lists"}