A C ++ 20 Echo Web Server يعمل على Linux .
إذا قام المستخدم بإدخال اسم <user> ورسالة <msg> ، فسيقوم الخادم بالرد بـ <user> said "<msg>" .
اضبط الموقع على مجلد المشروع وتشغيله:
docker image build . -t < image > يجب استبدال <image> باسم صورة Docker مخصص.
docker container run < image > ctest --test-dir .. -VV config.yaml هو التكوين الافتراضي. سيتم نسخه إلى Docker أثناء المبنى.
server :
# The TCP listening port.
port : 10000
# The website folder.
asset_folder : " assets "
# The maximum alive time for client timers (in seconds).
# When a client's timer reaches zero and it has no activity, it will disconnect.
alive_time : 60
loggers :
- name : root
level : info
appenders :
- type : stdoutفيما يلي طريقتان لجعل التكوين الجديد فعالا.
config.yaml وإنشاء صورة Docker جديدة.build/bin/config.yaml . راجع src/log/README.md لمزيد من التفاصيل إذا كنت تريد تغيير تكوين المسجل.
docker container run -p < container-port > : < host-port > < image > يجب أن يكون <container-port> مساوياً لـ server.port في config.yaml . يمكن أن يكون <host-port> أي منفذ متاح لآلة المضيف. -p <container-port>:<host-port> يربط <container-port> من الحاوية إلى <host-port> للجهاز المضيف.
بعد تشغيل الخادم ، افتح متصفحًا والوصول إلى http://localhost:<host-port> على جهاز المضيف لاستخدامه.
يمكنك تشغيل الأمر التالي والوصول إلى http://localhost:10000 إذا كنت تستخدم التكوين الافتراضي.
docker container run -p 10000:10000 < image > تؤدي اختبارات الوحدة باستخدام إطار عمل googletest ، الذي يتكون من اختبارات عامة وخاصة.
tests . ينتهي اسم ملف اختبار الوحدة بـ _test .
يتبع نمط تعليق الكود مواصفات doxygen .
يتبع مخطط الفصل مواصفات حورية البحر .
.
├── CITATION.cff
├── CMakeLists.txt
├── Dockerfile
├── LICENSE
├── README.md
├── .github
│ └── workflows
│ └── cmake-googletest.yaml
├── assets
│ ├── favicon.ico
│ ├── http-status.html
│ └── index.html
├── config.yaml
├── docs
│ └── badges
│ ├── C++.svg
│ ├── License-MIT.svg
│ ├── Linux.svg
│ ├── Made-with-CMake.svg
│ ├── Made-with-GitHub-Actions.svg
│ └── Made-with-Docker.svg
├── include
│ ├── config.h
│ ├── containers
│ │ ├── block_deque.h
│ │ ├── buffer.h
│ │ ├── epoller.h
│ │ ├── heap_timer.h
│ │ └── thread_pool.h
│ ├── http.h
│ ├── io.h
│ ├── ip.h
│ ├── log.h
│ ├── test_util.h
│ ├── util.h
│ └── web_server.h
├── src
│ ├── CMakeLists.txt
│ ├── config
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── config.cpp
│ ├── containers
│ │ ├── CMakeLists.txt
│ │ ├── buffer
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ └── buffer.cpp
│ │ ├── epoller
│ │ │ ├── CMakeLists.txt
│ │ │ └── epoller.cpp
│ │ └── thread_pool
│ │ ├── CMakeLists.txt
│ │ └── thread_pool.cpp
│ ├── http
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── http.cpp
│ │ ├── request.cpp
│ │ ├── request.h
│ │ ├── request_test.cpp
│ │ ├── response.cpp
│ │ ├── response.h
│ │ └── response_test.cpp
│ ├── io
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── io.cpp
│ ├── ip
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ └── ip.cpp
│ ├── log
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── appender.cpp
│ │ ├── config_init.cpp
│ │ ├── config_init.h
│ │ ├── config_init_test.cpp
│ │ ├── field.cpp
│ │ ├── field.h
│ │ ├── field_test.cpp
│ │ └── log.cpp
│ ├── main.cpp
│ ├── test_util
│ │ ├── CMakeLists.txt
│ │ └── test_util.cpp
│ └── util
│ ├── CMakeLists.txt
│ └── util.cpp
└── tests
├── CMakeLists.txt
├── config_test.cpp
├── containers
│ ├── block_deque_test.cpp
│ ├── buffer_test.cpp
│ ├── heap_timer_test.cpp
│ └── thread_pool_test.cpp
├── http_test.cpp
├── io_test.cpp
├── ip_test.cpp
├── log_test.cpp
└── util_test.cpp
موزعة تحت رخصة معهد ماساتشوستس للتكنولوجيا . انظر LICENSE لمزيد من المعلومات.