Description
A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications.
See https://github.com/eidheim/Simple-WebSocket-Server for an easy way to make WebSocket/WebSocket Secure endpoints in C++. Also, feel free to check out the new C++ IDE supporting C++11/14/17: https://github.com/cppit/jucipp.
Simple-Web-Server alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view Simple-Web-Server alternatives based on common mentions on social networks and blogs.
-
libcurl
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. libcurl offers a myriad of powerful features -
Muduo
Event-driven network library for multi-threaded Linux server in C++11 -
uWebSockets
Simple, secure & standards compliant web server for the most demanding of applications -
C++ Workflow
C++ Parallel Computing and Asynchronous Networking Engine -
Proxygen
A collection of C++ HTTP libraries including an easy to use HTTP server. -
POCO
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. -
C++ REST SDK
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services. -
cpp-httplib
A C++ header-only HTTP/HTTPS server and client library -
libwebsockets
canonical libwebsockets.org networking library -
cpr
C++ Requests: Curl for People, a spiritual port of Python Requests. -
RakNet
RakNet is a cross platform, open source, C++ networking engine for game programmers. -
evpp
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols. -
Boost.Beast
HTTP and WebSocket built on Boost.Asio in C++11 -
boost.beast(new repo)
HTTP and WebSocket built on Boost.Asio in C++11 -
wdt
Warp speed Data Transfer (WDT) is an embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths. -
cpp-netlib
The C++ Network Library Project -- cross-platform, standards compliant networking library. -
PcapPlusPlus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, WinPcap, DPDK and PF_RING. -
netcode.io
A protocol for secure client/server connections over UDP -
Restbed
Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 applications. -
Onion
C library to create simple HTTP servers and Web Applications. -
Silicon
A high performance, middleware oriented C++14 http web framework please use matt-42/lithium instead -
dotenv-linter
⚡️Lightning-fast linter for .env files. Written in Rust 🦀 -
Simple-WebSocket-Server
A very simple, fast, multithreaded, platform independent WebSocket (WS) and WebSocket Secure (WSS) server and client library implemented using C++11, Boost.Asio and OpenSSL. Created to be an easy way to make WebSocket endpoints in C++. -
Tufão
An asynchronous web framework for C++ built on top of Qt -
RESTinio
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use -
libhttpserver
C++ library for creating an embedded Rest HTTP server (and more) -
nope.c
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers. -
net_skeleton
Async non-blocking multi-protocol networking library for C/C++ -
Seasocks
Simple, small, C++ embeddable webserver with WebSockets support -
verdigris
Qt without moc: set of macros to use Qt without needing moc -
IXWebSocket
websocket and http client and server library, with TLS support and very few dependencies -
netLink
Socket and Networking Library using msgpack.org[C++11] -
tntnet
Tntnet is a web application server for web applications written in C++. -
QuantumGate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++. -
nanoMODBUS
A compact MODBUS RTU/TCP C library for microcontrollers -
NetIF
Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD -
Barracuda App Server
Embedded Web Server Library with Integrated Scripting Engine -
Pion Network Library
Pion Network Library (Boost licensed open source)
Developer Ecosystem Survey 2022
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Simple-Web-Server or a related project?
README
This project has moved to https://gitlab.com/eidheim/Simple-Web-Server.
Simple-Web-Server
A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Asio (both Boost.Asio and standalone Asio can be used). Created to be an easy way to make REST resources available from C++ applications.
See https://gitlab.com/eidheim/Simple-WebSocket-Server for an easy way to make WebSocket/WebSocket Secure endpoints in C++. Also, feel free to check out the new C++ IDE supporting C++11/14/17: https://gitlab.com/cppit/jucipp.
Features
- Asynchronous request handling
- Thread pool if needed
- Platform independent
- HTTPS support
- HTTP persistent connection (for HTTP/1.1)
- Client supports chunked transfer encoding
- Timeouts, if any of Server::timeout_request and Server::timeout_content are >0 (default: Server::timeout_request=5 seconds, and Server::timeout_content=300 seconds)
- Simple way to add REST resources using regex for path, and anonymous functions
Usage
See http_examples.cpp or https_examples.cpp for example usage.
See particularly the JSON-POST (using Boost.PropertyTree) and the GET /match/[number] examples, which are most relevant.
Dependencies
- Boost.Asio or standalone Asio
- Boost is required to compile the examples
- For HTTPS: OpenSSL libraries
Compile and run
Compile with a C++11 compliant compiler:
mkdir build
cd build
cmake ..
make
cd ..
HTTP
Run the server and client examples: ./build/http_examples
Direct your favorite browser to for instance http://localhost:8080/
HTTPS
Before running the server, an RSA private key (server.key) and an SSL certificate (server.crt) must be created. Follow, for instance, the instructions given here (for a self-signed certificate): http://www.akadia.com/services/ssh_test_certificate.html
Run the server and client examples: ./build/https_examples
Direct your favorite browser to for instance https://localhost:8080/