From b73ad9f2346592ee5e19d971db1363e19451caad Mon Sep 17 00:00:00 2001 From: Francesco Cozzuto Date: Tue, 22 Jul 2025 12:07:26 +0200 Subject: [PATCH] Update README --- README.md | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ac34f93..0275219 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,21 @@ # cHTTP cHTTP is an HTTP **client and server** library for C with minimal dependencies and **distributed as a single chttp.c** file. +Here is a list of features: + +* HTTP 1.1 client and server +* Fully non-blocking +* Cross-Platform (Windows & Linux) +* HTTPS support (using OpenSSL) +* Virtual Hosts +* Single-threaded +* Zero-copy interface + ## Getting Started The library is distributed in a single amalgamated `chttp.c` file or as a static library, so you can: -1) Download `chttp.c` and `chttp.h` from the repository (no need to close the project) +1) Download `chttp.c` and `chttp.h` from the repository (no need to clone the project) 2) or clone the project and build the static library my running @@ -13,7 +23,7 @@ The library is distributed in a single amalgamated `chttp.c` file or as a static make libchttp.a ``` -If you used the amalgamated files, this are the flags required to build a project with cHTTP: +If you used the amalgamated files, these are the flags required to build a project with cHTTP: ```bash # Linux @@ -23,19 +33,17 @@ gcc your_app.c chttp.c gcc your_app.c chttp.c -lws2_32 ``` -If you are using the static library, instead if adding `chttp.c`, you will need to add the `-lchttp` flag. +If you are using the static library, instead of adding `chttp.c`, you will need to add the `-lchttp` flag. -By defalt the library is build without HTTPS. To enable it, add the flags `-DHTTPS_ENABLED -lssl -lcrypto`. +By default, the library is built without HTTPS. To enable it, add the flags `-DHTTPS_ENABLED -lssl -lcrypto`. -## Features & Limitations +```bash +# Linux + HTTPS +gcc your_app.c chttp.c -DHTTPS_ENABLED -lssl -lcrypto -* HTTP 1.1 client and server -* Fully non-blocking -* Cross-Platform (Windows & Linux) -* HTTPS support (using OpenSSL) -* Virtual Hosts -* Single-threaded -* Zero-copy interface +# Windows + HTTPS +gcc your_app.c chttp.c -lws2_32 -DHTTPS_ENABLED -lssl -lcrypto +``` ## Example @@ -98,5 +106,4 @@ cHTTP officially supports Linux and Windows. Currently, HTTPS is implemented using OpenSSL which comes preinstalled on Linux but not Windows. It must be enabled by passing the `-DHTTPS_ENABLED` flag to gcc when building your program: ## Scalability -cHTTP is designed to reach moderate scale to allow a compact and easy to work with implementation. The non-blocking I/O is based on `poll()` which I would say works up to about 500 concurrent connections. If you have more than that, you should consider APIs like epoll, io_uring, -and I/O completion ports. If you do go that route, you can still reuse the cHTTP I/O independent core (see HTTP_Engine) to handle the HTTP protocol for you, both for client and server. +cHTTP is designed to reach moderate scale to allow a compact and easy to work with implementation. The non-blocking I/O is based on `poll()` which I would say works up to about 500 concurrent connections. If you have more than that, you should consider APIs like epoll, io_uring, and I/O completion ports. If you do go that route, you can still reuse the cHTTP I/O independent core (see HTTP_Engine) to handle the HTTP protocol for you, both for client and server.