libquic alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view libquic 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, TFTP, WS and WSS. 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 -
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. -
Proxygen
A collection of C++ HTTP libraries including an easy to use HTTP server. -
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. -
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(new repo)
HTTP and WebSocket built on Boost.Asio in C++11 -
Simple-Web-Server
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. -
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. -
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, Npcap, WinPcap, DPDK and PF_RING. -
cpp-netlib
The C++ Network Library Project -- cross-platform, standards compliant networking library. -
Restbed
Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 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++. -
libhttpserver
C++ library for creating an embedded Rest HTTP server (and more) -
RESTinio
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use -
nope.c
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers. -
Seasocks
Simple, small, C++ embeddable webserver with WebSockets support -
net_skeleton
Async non-blocking multi-protocol networking library for C/C++ -
D++
C++ Discord API Bot Library - D++ is Lightweight and scalable for small and huge bots! -
IXWebSocket
websocket and http client and server library, with TLS support and very few dependencies -
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 embedded/microcontrollers -
Barracuda App Server
Embedded Web Server Library with Integrated Scripting Engine -
NetIF
Header-only C++14 library for getting addresses associated with network interfaces without name lookups on Windows, macOS, Linux, and FreeBSD
Access the most powerful time series database as a service
* 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 libquic or a related project?
Popular Comparisons
README
QUIC, a multiplexed stream transport over UDP
QUIC is an experimental protocol aimed at reducing web latency over that of TCP. On the surface, QUIC is very similar to TCP+TLS+SPDY implemented on UDP. Because TCP is implemented in operating system kernels, and middlebox firmware, making significant changes to TCP is next to impossible. However, since QUIC is built on top of UDP, it suffers from no such limitations.
Key features of QUIC over existing TCP+TLS+SPDY include
- Dramatically reduced connection establishment time
- Improved congestion control
- Multiplexing without head of line blocking
- Forward error correction
- Connection migration
See Chromium QUIC Page for detailed information.
libquic
This repository is sources and dependencies extracted from Chromium's QUIC Implementation with a few modifications and patches to minimize dependencies needed to build QUIC library.
Notable and only dependency is BoringSSL. The BoringSSL sources is already embedded in this repository and linked with CMake build file. You don't need any kind of dependency installs.
Language Bindings
This library is intended as an essential reference point for other language bindings and possibly for integration with other C/C++ codebase such as HTTP servers like Apache or nginx.
Currently there is only one experimental language binding:
- Go binding: goquic
Getting Started
How to build
Building with CMake and Ninja (Recommended):
$ mkdir build/
$ cd build/
$ cmake -GNinja ..
$ ninja
Building with CMake and Make:
$ mkdir build/
$ cd build/
$ cmake ..
$ make -j 4
make -j limits the number of simultaneously executed Recepies. Adapt this number to the capabilities of your build machine.
libquic.a
library file will be generated. libssl.a
, libcrypto.a
will be
located in build/boringssl directory.
To do release builds run $ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
instead
of $ cmake -GNinja ..
.
How to integrate
In order to integrate libquic to your code, your best source of documentation is official Chromium QUIC toy client and server. Golang binding will help too.
Syncing from Upstream
Great effort has been made to make syncing from upstream Chromium sources as
effortless as possible. See DEPS
file for all the dependencies. See
manage.py
script for actual syncing.
If you want to apply upstream changes,
- Clone & Checkout chromium upstream.
- Build QUIC server:
cd out/Debug; ninja quic_server
- Update "chromium_revision" var at DEPS to your chromium source code revision.
- Do
./sync.py <CHROMIUM_GIT_ROOT>
All necessary files will be updated to new ones without patches applied. - Temporarily commit here.
- Do
./sync.py <CHROMIUM_GIT_ROOT>
--patch All the patches will be applied. Some patches will be rejected. - If there is any patch collision, manually apply the rejected patches.
Open the
*.rej
files and carefully apply the rejected hunks manually. - Try build, and you'll find that you may need to add additional
modifications to make build successful. There may be added or deleted
source files. Update
CMakeLists.txt
accordingly. - If the build is successful, make a patch by:
git diff src/ > patch/basepatch.patch
(Make sure you don't includecustom/
directory sources to the patch) - Add patch file to
DEPS
or update existing patch files. Amend previous commit. - Commit
DEPS
, new patch, and source changes