An easy-to-learn, high performance network io library written in modern cpp (c++11), It borrows concepts from Netty, and with well defined internal modules, It enables you to write rpc, http/https,websocket application with just few lines。

Overview

A new beginning of network programming

What is Netplus

Netplus is a network programming library written in c++11. It's highly extensible, and with default configuration it can reach high performance. It's easy to learn. Basically, you can just implement your own business in a channel handler, then the library would do all the dirty work (platform specific considerations, io event delivery&process, basic memory optimization, etc ) for you. You can also write http/https,websocket,based application even you only have little corresponding knowledge background, Cuz it has relevant modules to simplify programming tasks of such kinds. Netplus borrows lots of concepts from Netty, and tries to implement these concepts by c++, such as channel, channel handler, channel pipeline, executor, scheduler, promise. Any one who is familiar with Netty should be able to start with ease.

What can we use Netplus to do

1) Implement a message gateway
2) Use as the network component of a message queue, gameserver or any other network based application.
   please note that netplus is not a gameserver framework, But you can implement one with netplus
3) Implement protocol driver of Middleware, such as kinds of database, message queue server, etc
4) Implement http/https, websocket based application
5) Implement RPC server

Target Arch & Platform

1) Windows on x86
2) Linux on x86/arm
3) IOS/MAC on x86/arm
4) Android on x86/arm

Learn more from the following urls:

Build and usage: https://github.com/netplus/netplus/wiki#building--usage

Quick Start: https://github.com/netplus/netplus/wiki#quick-start

Benchmark: https://github.com/netplus/netplus/wiki#benchmark

Examples: https://github.com/netplus/netplus/wiki#examples

Basic concept: https://github.com/netplus/netplus/wiki#concept

Modules: https://github.com/netplus/netplus/wiki#modules

Zhihu: https://www.zhihu.com/column/c_1339539434091040768

Others

QQ group: 576499184 (加群请注明来源,thx)
You might also like...
RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system
RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system

RPC++ RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system Installing requirements Arch based systems pacm

An easy to use and powerful open source websocket library written in C.

libwebsock Easy to use C library for websockets This library allows for quick and easy development of applications that use the websocket protocol, wi

modern C++(C++11), simple, easy to use rpc framework

modern C++(C++11), simple, easy to use rpc framework

Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket,  MQTT built-in protocols, async DNS resolver, and non-blocking API.
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Perf-ninja - This is an online course where you can learn and master the skill of low-level performance analysis and tuning.
Perf-ninja - This is an online course where you can learn and master the skill of low-level performance analysis and tuning.

Performance Ninja Class This is an online course where you can learn to find and fix low-level performance issues, for example CPU cache misses and br

websocket and http client and server library, coming with ws, a command line swiss army knife utility

Hello world IXWebSocket is a C++ library for WebSocket client and server development. It has minimal dependencies (no boost), is very simple to use an

Small and fast cross-platform networking library, with support for messaging, IPv6, HTTP, SSL and WebSocket.

frnetlib Frnetlib, is a cross-platform, small and fast networking library written in C++. There are no library dependencies (unless you want to use SS

H2O - the optimized HTTP/1, HTTP/2, HTTP/3 server

H2O - an optimized HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3 (experimental) Copyright (c) 2014-2019 DeNA Co., Ltd., Kazuho Oku, Tatsuhi

Comments
  • Netplus failed to build with error C1083: Cannot open include file: 'netp/core/compiler/msvc__NETP_ARCH_STR_.hpp' and C1189: #error:

    Netplus failed to build with error C1083: Cannot open include file: 'netp/core/compiler/msvc__NETP_ARCH_STR_.hpp' and C1189: #error: "Platform not supported!" with MSVC on windows

    Netplus failed to build with error C1083: Cannot open include file: 'netp/core/compiler/msvc__NETP_ARCH_STR_.hpp' and C1189: #error: "Platform not supported!" with MSVC on windows. It can reproduces on version https://github.com/netplus/netplus/commit/5db9e3ab4d370cbd9b9f105b0dce64100d0ab7bc. Could you please help look at this issue? Thank you very much

    Environment Compiler version: VS2019 (16.11.9) Operating system: Windows server 2019

    Steps to reproduce:

    1. open VS2019 x64 tools command
    2. git clone https://github.com/netplus/netplus F:\netplus
    3. cd F:\netplus\projects\cmake
    4. "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -host_arch=amd64 -arch=arm64
    5. mkdir build_arm64 & cd build_arm64
    6. cmake -G "Visual Studio 16 2019" -A arm64 -DCMAKE_SYSTEM_VERSION=10.0.18362.0 ..
    7. msbuild /m /p:Platform=arm64 /p:Configuration=Release netplus.sln /t:Rebuild

    Build.log: msbuild.log

    Error info: 5>F:\netplus\projects\cmake....\include\netp/core/compiler.hpp(98,10): fatal error C1083: Cannot open include file: 'netp/core/compiler/msvc__NETP_ARCH_STR_.hpp': No such file or directory (d:\a01_work\3\s\src\vctools\Compiler\CxxFE\sl\p1\c\p0prepro.c:1968) [F:\netplus\projects\cmake\build_arm64\netplus.vcxproj] 5>F:\netplus\3rd\stack_walker\StackWalker.cpp(1194,1): fatal error C1189: #error: "Platform not supported!" [F:\netplus\projects\cmake\build_arm64\netplus.vcxproj]

    opened by YangYang129 8
  • rpc: optimize request list

    rpc: optimize request list

    1, We have to check the requested call and see whether the request has expired a duration. 2, For each reply from server, we have to lookup through a container (list for now) to get the original request call

    Right now, we use a requested list to achieve the above goal, the lookup cost is o(n), It might be better to optimize the list to a hash based circular buf.

    opened by netplus 2
  • Netplus failed to build due to

    Netplus failed to build due to "fatal error C1083: Cannot open include file: 'ares_build.h': No such file or directory" on x86 and x64 configuration with MSVC on windows

    Describe the bug Netplus failed to build due to "fatal error C1083: Cannot open include file: 'ares_build.h': No such file or directory" on x86 and x64 configuration with MSVC on windows. Could you please help look at this issue or provide some workarounds? Thanks in advance.

    To Reproduce

    1. git clone https://github.com/netplus/netplus F:\gitP\musescore\MuseScore
    2. mkdir F:\gitP\netplus\netplus\projects\cmake\build_amd64
    3. cd F:\gitP\netplus\netplus\projects\cmake\build_amd64
    4. set VSCMD_SKIP_SENDTELEMETRY=1 & "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -host_arch=amd64 -arch=amd64
    5. cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_SYSTEM_VERSION=10.0.18362.0 .. 2>&1
    6. msbuild /m /p:Platform=x64 /p:Configuration=Release netplus.sln /t:Rebuild 2>&1

    Error Message "F:\gitP\netplus\netplus\projects\cmake\build_amd64\netplus.sln" (Rebuild target) (1) ->        "F:\gitP\netplus\netplus\projects\cmake\build_amd64\netplus.vcxproj.metaproj" (Rebuild target) (3) ->        "F:\gitP\netplus\netplus\projects\cmake\build_amd64\netplus.vcxproj" (Rebuild target) (5) ->        (ClCompile target) ->          F:\gitP\netplus\netplus\3rd\c-ares\c-ares-1.18.1\src\lib\ares_setup.h(83,10): fatal error C1083: Cannot open include file: 'ares_build.h': No such file or directory (D:\a01_work\2\s\src\vctools\Compiler\CxxFE\sl\p1\c\p0prepro.c:1934) [F:\gitP\netplus\netplus\projects\cmake\build_amd64\netplus.vcxproj]

        11 Warning(s)     1 Error(s)

    Expected behavior Build successfully.

    Setup VS 2019 + Windows Server 2019

    Additional context build.log log

    opened by rachelhe123 2
  • socket_channel: check whether a sendmsg with multi-buf has a better performance compared to send

    socket_channel: check whether a sendmsg with multi-buf has a better performance compared to send

    In case there are n buf to be sent, if we could merge it together, we could save n-1 system call(send), There are two ways to achieve the goal . 1, copy n buf into 1 buf, then call send 2, use sendmsg with iov

    We have to schedule a bench and make a choice.

    opened by netplus 1
Owner
BingBing
C/C++ Programmer
BingBing
cuehttp is a modern c++ middleware framework for http(http/https)/websocket(ws/wss).

cuehttp 简介 cuehttp是一个使用Modern C++(C++17)编写的跨平台、高性能、易用的HTTP/WebSocket框架。基于中间件模式可以方便、高效、优雅的增加功能。cuehttp基于boost.asio开发,使用picohttpparser进行HTTP协议解析。内部依赖了nl

xcyl 29 Dec 17, 2022
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.

evpp Introduction 中文说明 evpp is a modern C++ network library for developing high performance network services using TCP/UDP/HTTP protocols. evpp provid

Qihoo 360 3.2k Jan 5, 2023
Pushpin is a reverse proxy server written in C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services.

Pushpin is a reverse proxy server written in C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. The project is unique among realtime push solutions in that it is designed to address the needs of API creators. Pushpin is transparent to clients and integrates easily into an API stack.

Fanout 3.2k Jan 2, 2023
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution

CppServer Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and

Ivan Shynkarenka 958 Jan 3, 2023
A very basic eBPF Load Balancer in a few lines of C

An eBPF Load Balancer from scratch As seen at eBPF Summit 2021. This is not production ready :-) This uses libbpf as a git submodule. If you clone thi

Liz Rice 168 Jan 8, 2023
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use

What Is RESTinio? RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO

Stiffstream 924 Jan 6, 2023
Gromox - Groupware server backend with MAPI/HTTP, RPC/HTTP, IMAP, POP3 and PHP-MAPI support for grommunio

Gromox is the central groupware server component of grommunio. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Conne

grommunio 139 Dec 26, 2022
Packio - An asynchronous msgpack-RPC and JSON-RPC library built on top of Boost.Asio.

Header-only | JSON-RPC | msgpack-RPC | asio | coroutines This library requires C++17 and is designed as an extension to boost.asio. It will let you bu

Quentin Chateau 58 Dec 26, 2022
A high-performance and easy-to-use C++ network library.

pine A high-performance and easy-to-use C++ network library. Now this is just a toy library for education purpose, do not use in production. example A

Baroquer 80 Dec 30, 2022
A cross-platform network learning demos. Like high-performance http server

Network-Learn A cross-platform network learning demos (toys). And I try not to use 3rd-party libraries. Welcome to try it out and leave your comments.

Ho 229 24 Sep 6, 2022