Breep alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view Breep 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 -
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. -
RakNet
DISCONTINUED. 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. -
Simple-Web-Server
DISCONTINUED. 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
DISCONTINUED. 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, AF_XDP 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 -
Simple-WebSocket-Server
DISCONTINUED. 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++. -
RESTinio
Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ 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. -
IXWebSocket
websocket and http client and server library, with TLS support and very few dependencies -
mailio
mailio is a cross platform C++ library for MIME format and SMTP, POP3, IMAP protocols. It is based on the standard C++ 17 and Boost library. -
QuantumGate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++. -
NetIF
Header-only C++14 library for getting addresses associated with network interfaces without name lookups on Windows, macOS, Linux, and FreeBSD
CodeRabbit: AI Code Reviews for Developers
* 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 Breep or a related project?
Popular Comparisons
README
Breep
What is Breep?
Breep is a c++ bridged peer to peer library. What does that mean? It means that even though the network is constructed as a peer to peer one, there may be no direct connections between two dudes, say A and B, if these connections are impossible (due to poorly configured ports, for example). In that case, Breep will attempt to use another peer C as a bridge between A and B. Breep is also a high-level library. You don't have to care on when peers connect, disconnect, send data, and on how to send your classes. You simply register listeners that get notified when peers come and go, when they send you stuff. You may even use serialization and send your own object directly through the network. Same goes for your listeners: you don't say 'I want to listen for piles of bytes', but instead you say 'I want to listen for fancy::MyClass'.
How do I use Breep::network ?
The best way to now it is to read the [tutorials](tutorials/). Alternatively, you may read some [examples](examples/) and the online doc. But as a little preview, here is a 'Hello World!'-type example:
Here is how to create a network, start listening on port 1234, and send "Hello!" to any budy that connects:
BREEP_DECLARE_TYPE(std::string)
void co_listener(breep::tcp::network& network, const breep::tcp::peer& source) {
network.send_object_to(source, std::string("Hello!"));
}
int main() {
breep::tcp::network network(1234);
network.add_connection_listener(&co_listener);
network.sync_awake();
return 0;
}
The BREEP_DECLARE_TYPE
involved here is used to tell to breep::network that we will listen/send some std::string*s*.
If you forget to do it, you will get a compile-time error.
There is how to do the opposite: the network starts listening on port 1233, tries to connect at localhost:1234, prints the first message it sees, then disconnect:
BREEP_DECLARE_TYPE(std::string)
void data_listener(breep::tcp::netdata_wrapper<std::string>& dw) {
std::cout << dw.data << std::endl;
dw.network.disconnect();
}
int main() {
breep::tcp::network network(1233);
network.add_data_listener<std::string>(&data_listener);
if (!network.connect(boost::asio::ip::address_v4::loopback(), 1234)) {
std::cout << "Failed to connect.\n";
return 1;
}
network.join();
return 0;
}
Please don't get confused: there is no UDP in this lib (yet).
Why should I use Breep::network ?
- It's awesome!
- It's high level: you can directly send and receive objects.
- The overhead for this is low: if you set up well your serialization, you only have a fixed 64bits extra overhead (compared to sending raw bytes to the p2p network — in comparison, TCP has 320bits of overhead only for its header)
- It's easy to get in: just read the examples, you'll see!
Why should I NOT use Breep::network ?
- It has not been tested as much as it should have been.
- It's probably broken for BigEndian architecture (I have no way to test this, sorry ; a warning should be displayed on such architectures.)
- It's very, very slow to compile with.
Requirements
Resource | Requirement |
---|---|
Compiler | C++14 compliant or above |
Boost | Boost 1.55 or above |
Road Map
Milestone | Feature | Status |
---|---|---|
0.1 | Peer to peer network management | complete |
0.1 | Instantiated objects delivery | complete |
1.0 | Improved serialization | complete |
1.0 | Multiple objects delivery in one go | complete |
x.x | Client server network management | on hold |
The project is currently on testing stage before the release of Breep 1.0.0
License
This work is under the [European Union Public License v1.1](LICENSE.md).
You may get a copy of this license in your language from the European Commission here.
Extract of article 13 :
All linguistic versions of this Licence, approved by the European Commission, have identical value.
Parties can take advantage of the linguistic version of their choice.
Author
Lucas Lazare, an IT student frustrated from not being able to properly use java's broken network library, and inspired by KryoNet
*Note that all licence references and agreements mentioned in the Breep README section above
are relevant to that project's source code only.