All Projects → uNetworking → Usockets

uNetworking / Usockets

Licence: apache-2.0
Miniscule cross-platform eventing, networking & crypto for async applications

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Usockets

Hp Socket
High Performance TCP/UDP/HTTP Communication Component
Stars: ✭ 4,420 (+623.4%)
Mutual labels:  tcp, cross-platform, ssl
Packetsender
Network utility for sending / receiving TCP, UDP, SSL
Stars: ✭ 1,349 (+120.79%)
Mutual labels:  tcp, cross-platform, ssl
Stubmatic
Mock HTTP calls without coding. Designed specially for testing and testers.
Stars: ✭ 118 (-80.69%)
Mutual labels:  ssl, tcp
Rsocket Kotlin
RSocket Kotlin multi-platform implementation
Stars: ✭ 256 (-58.1%)
Mutual labels:  async, tcp
Lan Share
Cross platform LAN File transfer application built with Qt C++ framework
Stars: ✭ 317 (-48.12%)
Mutual labels:  tcp, cross-platform
SuperSimpleTcp
Simple wrapper for TCP client and server in C# with SSL support
Stars: ✭ 263 (-56.96%)
Mutual labels:  ssl, tcp
FuckDPI V2
FuckDPIv2 can fuck the Korean Government's internet censorship by fragmenting SSL ClientHello.
Stars: ✭ 44 (-92.8%)
Mutual labels:  ssl, tcp
Hprose Nodejs
Hprose is a cross-language RPC. This project is Hprose 2.0 for Node.js
Stars: ✭ 297 (-51.39%)
Mutual labels:  tcp, cross-platform
Network
C# Network Library
Stars: ✭ 237 (-61.21%)
Mutual labels:  async, tcp
Twisted
Event-driven networking engine written in Python.
Stars: ✭ 4,442 (+627%)
Mutual labels:  async, ssl
Yasio
A multi-platform support c++11 library with focus on asio (asynchronous socket I/O) for any client application.
Stars: ✭ 483 (-20.95%)
Mutual labels:  tcp, ssl
ronin-support
A support library for Ronin. Like activesupport, but for hacking!
Stars: ✭ 23 (-96.24%)
Mutual labels:  ssl, tcp
Swiddler
TCP/UDP debugging tool.
Stars: ✭ 56 (-90.83%)
Mutual labels:  ssl, tcp
Heim
Cross-platform async library for system information fetching 🦀
Stars: ✭ 572 (-6.38%)
Mutual labels:  async, cross-platform
XAsyncSockets
XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.
Stars: ✭ 28 (-95.42%)
Mutual labels:  ssl, tcp
Microwebsrv2
The last Micro Web Server for IoTs (MicroPython) or large servers (CPython), that supports WebSockets, routes, template engine and with really optimized architecture (mem allocations, async I/Os). Ready for ESP32, STM32 on Pyboard, Pycom's chipsets (WiPy, LoPy, ...). Robust, efficient and documented!
Stars: ✭ 295 (-51.72%)
Mutual labels:  async, ssl
Fern.vim
🌿 General purpose asynchronous tree viewer written in Pure Vim script
Stars: ✭ 552 (-9.66%)
Mutual labels:  async, cross-platform
Socket
Non-blocking socket and TLS functionality for PHP based on Amp.
Stars: ✭ 122 (-80.03%)
Mutual labels:  async, tcp
Punchclock
Make sure your asynchronous operations show up to work on time
Stars: ✭ 235 (-61.54%)
Mutual labels:  async, cross-platform
Laravel S
LaravelS is an out-of-the-box adapter between Swoole and Laravel/Lumen.
Stars: ✭ 3,479 (+469.39%)
Mutual labels:  async, tcp

µSockets - miniscule networking & eventing

This is the cross-platform async networking and eventing foundation library used by µWebSockets.

It runs on Linux, macOS, FreeBSD and Windows. Most is C11 while some optional parts are C++17.

Language grade: C/C++

Key aspects

  • Built-in (optionally available) TLS support exposed with identical interface as for TCP.
  • Acknowledges and integrates with any event-loop via a layered hierarchical design of plugins.
  • Extremely pedantic about user space memory footprint and designed to perform as good as can be.
  • Designed from scratch to map well to user space TCP stacks or other experimental platforms.
  • Low resolution timer system ideal for performant tracking of networking timeouts.
  • Minimal yet truly cross-platform, will not emit a billion different platform specific error codes.
  • Fully opaque library, inclusion will not completely pollute your global namespace.
  • Continuously fuzzed by Google's OSS-Fuzz with 95% code coverage (asan, ubsan and msan).

Extensible

Designed in layers of abstraction where any one layer depends only on the previous one. Write plugins and swap things out with compiler flags as you see fit.

Compilation

Build example binaries using make examples. The static library itself builds with make. It is also possible to simply include the src folder in your project as it is standard C11. Defining LIBUS_NO_SSL (-DLIBUS_NO_SSL) will disable OpenSSL 1.1+ support/dependency (not needed if building with shipped Makefile). Build with environment variables set as shown below to configure for specific needs.

Available plugins
  • Build using WITH_LIBUV=1 make [examples] to use libuv as event-loop.
  • Build using WITH_GCD=1 make [examples] to use Grand Central Dispatch/CoreFoundation as event-loop (slower).
  • Build using WITH_OPENSSL=1 make [examples] to enable and link OpenSSL 1.1+ support (or BoringSSL).
  • Build using WITH_WOLFSSL=1 make [examples] to enable and link WolfSSL 2.4.0+ support for embedded use.

The default event-loop is native epoll on Linux, native kqueue on macOS and finally libuv on Windows.

A word on performance

This library is opaque; there are function calls for everything - even simple things like accessing the "user data" of a socket. In other words, static linking and link-time-optimizations mean everything for performance. I've benchmarked dynamic linking vs. static, link-time optimization and found roughly a 60% performance difference.

The kernel you run makes a huge difference. Linux wins, hands down. Mitigations off, or a modern hardware-mitigated CPU makes huge differences and distros like Clear Linux have shown significant speedups compared to more "vanilla" kernels.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].