QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++.

Overview

QuantumGate

About

QuantumGate is a peer-to-peer (P2P) communications protocol, library and API. The long-term goal for QuantumGate is to become a platform for distributed computing based on a mesh networking model. In the short term, the goal is to provide developers with networking technology that they can easily integrate and use in their own applications. Click here for a more detailed overview.

Disclaimer

This software is currently in alpha development stage. It has not yet undergone peer review and no security audits have yet been done on the cryptographic protocol and its implementation. The API may also change, and while big changes are unlikely it will receive small updates as development progresses. Feel free to use and experiment with this software in your own projects, but keep the above information in mind.

Status

Based on the architecture described in the overview, the following main features are not yet implemented:

  • DHT functionality
  • Database functionality

Platforms

QuantumGate is developed in C++20 and currently only supports the Microsoft Windows (x86/x64) platform. Support for Linux is planned for the future.

Pre-built Binaries and Releases

There are releases available on the releases page, some including pre-built binaries, that you can download to quickly try out. If you'd like to build from source then you can check the Manual Build section below.

Manual Build

The master branch is generally kept as stable as possible so you can download the source code from there instead of from the releases page if you prefer to work with the latest version.

You'll require the latest version of Microsoft Visual Studio 2022, as well as the dependencies listed below. When the paths to the dependency includes and libraries have been configured properly, building is as simple as opening the QuantumGate.sln file in the project root with Visual Studio and issuing the build command for the entire solution.

Dependencies

QuantumGate Core Library

Name Version
OpenSSL At least 3.0.0
PCG-Random Latest.
zlib At least 1.2.11
Zstandard At least 1.5.1

QuantumGate Test Applications/Extenders

Name Version
Monocypher At least 3.1.2
JSON for Modern C++ At least 3.10.4

Naming

The QuantumGate MSVC project is configured to look for specific naming of the OpenSSL, zlib and Zstandard .dll and .lib files, depending on the platform (32 or 64 bit) you're building for. You may have to build these libraries yourself to specify the names, or, alternatively you may change the names in the source code and configuration to the ones you use.

Library x86 Debug x86 Release x64 Debug x64 Release
OpenSSL libcrypto32d.lib, libcrypto32d.dll libcrypto32.lib, libcrypto32.dll libcrypto64d.lib, libcrypto64d.dll libcrypto64.lib, libcrypto64.dll
zlib zlib32.lib, zlib32.dll zlib32.lib, zlib32.dll zlib64.lib, zlib64.dll zlib64.lib, zlib64.dll
Zstandard zstd32.lib, zstd32.dll zstd32.lib, zstd32.dll zstd64.lib, zstd64.dll zstd64.lib, zstd64.dll

Documentation

Documentation can be found in the wiki.

Examples

A listing of examples to get you started quickly can be found in the wiki.

Tutorials

A small but growing collection of tutorials can be found in the wiki.

License

The license for the QuantumGate source code can be found in the LICENSE file in the project root. In addition, QuantumGate uses third party source code covered under separate licenses. This includes an implementation of SipHash (in QuantumGateCryptoLib\SipHash), NewHope (QuantumGateCryptoLib\NewHope), Classic McEliece (QuantumGateCryptoLib\McEliece) and NTRUPrime (QuantumGateCryptoLib\NTRUPrime). Refer to the LICENSE files in the subfolders for details.

Contact

For maximum efficiency and transparency open an issue on QuantumGate's GitHub repository with any questions and/or comments that you may have. Contact information for the author can be found at https://www.kareldonk.com.

Donations

This project is self-funded. If you like it and would like to ensure its continued and speedy development, consider donating to the author. If this software has served you well (in commercial projects), consider supporting its further development through donations to the author. For details please contact the author using the above contact information. Please be advised, though, that the author does not accept contributions from governments, governmental organizations, government funded organizations, or other comparable terrorist organizations. The author values the truth and will make no compromises with regard to the software, its mission and purpose.

Contributing

The author is currently especially looking for engineers who would like to review the source code, report bugs or other issues, do security audits, and especially cryptographers who want to help review the cryptographic protocols used including their implementation.

Comments
  • Runtime error - unresolved external symbols for Zlib Compress/DeCompress

    Runtime error - unresolved external symbols for Zlib Compress/DeCompress

    Getting errors like below

    Severity	Code	Description	Project	File	Line	Suppression State
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: static bool const __cdecl QuantumGate::Implementation::Compression::ZlibStreams::Decompress(enum std::byte *,unsigned int &,class QuantumGate::Implementation::Memory::BufferView const &)" ([email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@Z)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: void __thiscall <lambda_15208b9786da0bdb63571e938c20c530>::operator()(void)const " (??R<lambda_15208b9786da0bdb63571e938c20c530>@@QBEXXZ)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: static bool const __cdecl QuantumGate::Implementation::Compression::ZlibStreams::Decompress(enum std::byte *,unsigned int &,class QuantumGate::Implementation::Memory::BufferView const &)" ([email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@Z)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: static bool const __cdecl QuantumGate::Implementation::Compression::ZlibStreams::Compress(enum std::byte *,unsigned int &,class QuantumGate::Implementation::Memory::BufferView const &)" ([email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@Z)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: void __thiscall <lambda_d0a06043170a546814590c54b4a9b3c6>::operator()(void)const " (??R<lambda_d0a06043170a546814590c54b4a9b3c6>@@QBEXXZ)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "public: static bool const __cdecl QuantumGate::Implementation::Compression::ZlibStreams::Compress(enum std::byte *,unsigned int &,class QuantumGate::Implementation::Memory::BufferView const &)" ([email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@Z)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK2019	unresolved external symbol [email protected] referenced in function "bool const __cdecl QuantumGate::Implementation::Compression::Compress(class QuantumGate::Implementation::Memory::BufferView const &,class QuantumGate::Implementation::Memory::BufferImpl<class QuantumGate::Implementation::Memory::PoolAllocator<enum std::byte> > &,enum QuantumGate::Algorithm::Compression)" ([email protected]@[email protected]@@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]@Z)	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Examples\QuantumGateConsole\QuantumGate32D.lib(Compression.obj)	1	
    Error	LNK1120	7 unresolved externals	QuantumGateConsole	F:\Project\ProjectNet\QuantumGate\Build\Win32\Debug\QuantumGateConsoleExample.exe	1	
    
    

    This error is coming when trying to run CmdMess or QuantumGateConsole error,

    similar error was throwing while building QuantumGateLib project by changing output type to lib from different options and adding zlibwapi.dll and zlibwapi.lib files solved it , but the lib produced in turn throwing same error.

    Seems it has to do with zlibwapi i.e ZLIB_WINAPI macro as I read in some posts.

    Please help fixing this issue.

    good first issue 
    opened by pmahend1 14
  • problems with building, unresolved external symbols

    problems with building, unresolved external symbols

    Hello, for the last two afternoons I've been trying to get QuantumGate up and running but had no luck. I get these errors and can't make much sense of them, my only idea is that openssl nowadays has split its libraries into libcrypto and libssl. These errors all seem to mean that the SSL part of openssl isn't found in the library but I have no clue how to fix this. I am using the most current version of OpenSSL, downloaded and compiled (with Configure: VC-WIN64A no-asm no-shared no-idea, for some reason it would not compile without these settings) today.

    image

    opened by constantinfuerst 7
  • A question on scaling and latency.

    A question on scaling and latency.

    Hello,

    I have recently come across your QuantumGate project and it looks extremely interesting for possible use in some work that I am trying to get off the ground.

    With that in mind, I am wondering if it has been tested for large scaling and, if so, then I was also wondering what the latency was at those scales?

    My project involves many thousands (perhaps more) of concurrent P2P nodes across the Internet and I am looking for a base P2P framework that might be a good starting place to build for extremely huge number of connections.

    Any thoughts?

    opened by lonnietc 6
  • Over Internet Connectivity

    Over Internet Connectivity

    While experimenting with QuantumGate, i have run into a road block with the examples. I am unable to establish an over internet connection. with any example projects including TestApp. I am able to use for intranet.

    Listenermanager startup successful Extendermanager starting... Extendermanager startup successful QuantumGate startup successful [13/02/2019 04:29:13] Connecting to peer [ipv6 or ipv4 address]:9090 [13/02/2019 04:29:13] Socket error for peer 0.0.0.0:0 (LUID xxxxxxxxxxxxxxxxxx) (system : 10051 : A socket operation was attempted to an unreachable network.) [13/02/2019 04:29:13] Disconnecting from endpoint 0.0.0.0:0 (LUID xxxxxxxxxxxxxxxxxxxxxxxxxxxx) [13/02/2019 04:29:13] Could not connect to peer LUID xxxxxxxxxxxxxxxxxxxxxx (system : 10051 : A socket operation was attempted to an unreachable network.

    Here's the setup: I have two Machines, each computer is in a different location, one with an IPv6 address and the other with IPv4 address from the ISP's and the respective LAN addresses for each.

    Please advise

    good first issue 
    opened by Katastrophos 4
  • CmdMess access voilation on Send

    CmdMess access voilation on Send

    When I run the CMDMess on 2 different machines I am able to connect the two machines. But when I do send UUID_of_remote "hello" it throws exception Exception thrown at 0x528E175F (ucrtbased.dll) in CmdMess.exe: 0xC0000005: Access violation reading location 0x00000001.

    Is it due to auto m_Extender = std::make_shared<TestExtender::Extender>(nullptr); being nullptr

    I have all the libraries working well. This is we try to run in Debug/Release 32 mode and I have changed UUID at line params.UUID.Set of one machine so that two of them dont have same UUID

    bug 
    opened by pmahend1 4
  • QuantumGate Overview Question

    QuantumGate Overview Question

    Hello,

    I was reading the Overview documentation and it says:

    .
    .
    
    ...developers will be able to create extenders that can run on top of QuantumGate, which will provide various services on the network. In 2017 the decision was made to also allow developers in the short term to integrate QuantumGate directly into their own applications (instead of it running separately) and make it available as a library and API.
    .
    .
    .
    
    

    Is the design still the same in that QuantumGate is now a library that is compiled independently into each "extender" application?

    It seems that the original idea was to have the QuantumGate P2P network and then have the extender applications compile to run on top of the P2P network. This would have actually been a great idea if QG was set up a VPN points using WireGuard or other such that the user would start up their P2P VPN node and then it would connect into the QuantumGate mesh network.

    Then the users could easily build other extender applications (chat, email, etc.) that could just be started on the user nodes and communicate via the P2P VPN.

    Now it seems that each application will effectively have its own QuantumGate P2P mesh that is independent from other QuantumGate P2P meshes that are running on a particular node.

    Is this about correct? Cheers,

    opened by lonnietc 2
  • Bootstrapping discovery?

    Bootstrapping discovery?

    Hi,

    I'm working on https://github.com/SentryPeer/SentryPeer and wondered if you've been working on any WAN discovery or bootstrapping techniques?

    Some chat here - https://github.com/zeromq/zyre/issues/701

    Thanks, Gavin.

    opened by ghenry 2
  • CryptGenRandom is deprecated

    CryptGenRandom is deprecated

    CryptGenRandom is deprecated, see details at the top of article: https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom

    Recomendation use bcrypt methods instead.

    This easy should be rewritten...

    bool HandshakeExtender::GetRandomBytes(std::byte* buffer, const std::size_t buffer_len)
    {
      auto success = false;
    
      HCRYPTPROV ctx{ 0 };
      if (CryptAcquireContext(&ctx, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
      {
        if (CryptGenRandom(ctx, static_cast<DWORD>(buffer_len), reinterpret_cast<BYTE*>(buffer)))
        {
          success = true;
        }
    
        CryptReleaseContext(ctx, 0);
      }
    
      return success;
    }
    

    ...like this:

    #include <windows.h>
    #include <bcrypt.h>
    bool HandshakeExtender::GetRandomBytes(std::byte* buffer, const std::size_t buffer_size)
    {
       NTSTATUS status = BCryptGenRandom(
            NULL,                           // Alg Handle pointer; NUll is passed as BCRYPT_USE_SYSTEM_PREFERRED_RNG flag is used
            buffer,                         // Address of the buffer that recieves the random number(s)
            buffer_size,                     // Size of the buffer in bytes
            BCRYPT_USE_SYSTEM_PREFERRED_RNG // Flags
        );
    
      return status < 0;
    }
    
    opened by 0x4v0c4d0 1
  • Unreferenced dependencies: pcg_random, monocypher

    Unreferenced dependencies: pcg_random, monocypher

    pcg_random library in QuantumGateLib\Common\Random.h - unreferenced dependency. Should add it into readme in dependency list.

    monocypher library in Examples/QuantumGateExtenderHandshake/HandshakeExtender.cpp - unreferenced dependency. I see that is only example, but this is still should be noted in readme in dependency list section.

    opened by 0x4v0c4d0 1
  • Redundant Span and View

    Redundant Span and View

    While reading code I decide that this:

      using BufferView = BufferSpanImpl<true>;
      using BufferSpan = BufferSpanImpl<false>;
    

    is similar to this:

    using BufferView = const Buffer&;
    using BufferSpan = Buffer&;
    

    If I not mistaken then I think Span and View is redundant and should be replaced as I noticed.

    opened by 0x4v0c4d0 1
  • namespace

    namespace "Implementation" is redundant

    When I see the code, I already see that it is implementation of something. Namespace "Implementation" gives nothing to me. So I think this is redundant and should be removed.

    Let's open the class view pane in MVSC and look into QuantumGateLib: there 3 namespaces in global scope: Algorithm, API and Implementation.

    image

    So if the algorithms are separate, then what kind of implementation then inside of Implementation namespace.

    But even if you put the algorithms inside, then why. After all, it is already clear that inside the algorithms there is an implementation of algorithms. Why a separate implementation namespace is not clear

    opened by 0x4v0c4d0 1
  • QuantumGateDFS?

    QuantumGateDFS?

    Hello,

    I was reading over the QuantumGate documents and it mentioned an extender called QuantumGateDFS.

    Do you have this somewhere or a version of it, even Alpha, so that I can look into filesharing across the QuantunGate?

    Thanks

    opened by lonnietc 1
  • MultiChannel Support Question

    MultiChannel Support Question

    Hello,

    I am working out the designs for a type of online gaming system for many users and will be using QuantumGate as the core network system.

    To this end, the idea is to have QG Extenders integrated into the game servers. In this regard, there might, for example, be 5 servers in a cluster for Game-A and another cluster of machines, say 3 for example, for Game-B, and so on.

    I am wondering if there would be any type of advantage to have all of the machines for Game-A, or Game-B and so one for that matter, clustered into their own QuantumGate network as extenders where a multicast message could be easily sent and received by just to machines on that QG network instance?

    Or, is it better to work towards having specific but different extenders for the machine in each cluster group. For example, Game-A would all have similar extenders so that the Game-B machine does not get those messages, etc. for the Game-B and Game-C machines.

    I think that my basic question is if it is better to have a single QuantumGate network with each cluster of machines having specific related extenders, or is it better to think about how to set up a QuantumGate network instance for tach cluster type (i.e. QG-A, QG-B, QG-C, etc.)

    What would be more efficient?

    Also, there "could" come a time when a machine on the Game-A cluster, might need to send a message to Game-B, or Game-C servers, and vice versa.

    Mostly just playing with ideas to see what may, or may not, be efficient in working with Quantum Gate. Thanks

    opened by lonnietc 2
  • Release Binaries Clarification, Please

    Release Binaries Clarification, Please

    Hello and I hope that your day is going well.

    I have just downloaded the QG Binaries in the Release section

    https://github.com/kareldonk/QuantumGate/releases
    

    In that file there is:

    CmdMess.exe QuantumGateConsoleExample.exe QuantumGateExtenderExample.exe QuantumGateExtenderHandShakeExample.exe QuantumGateStartupExample.exe TestApp64.exe

    (plus some libraries).

    After downloading, and not finding any available documentation for what each one does, I started up the "QuantumGateStartupExample" which seems to be the actual QG Mesh Network and then also started "CmdMess" which seems to be an interactive messaging system.

    Please correct me if I am wrong about those 2 above.

    What I am wondering is, if there is any documentation to show what is needed to be started for the QG core network and what runs on top of it.

    Maybe some documentation or information on what each one does and how to use them would be very useful.

    What I am doing now, is to evaluate QG since I think that it might be useful for a new project that I am working on which is strikingly different than the previous project that I was considering QG for use in that work.

    Any clarification on these example projects and the core app needed to start up QG across multiple nodes would be greatly helpful.

    Thanks in advance

    opened by lonnietc 6
Releases(v0.3.5-alpha)
  • v0.3.5-alpha(Jan 1, 2022)

    quantumgate2

    This 0.3.5 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.3 or above) for Visual Studio 2022 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    What's new

    This version adds a major new feature: support for connections using the RFCOMM protocol that enables establishing connections to peers via Bluetooth.

    Checksums for Binaries.zip

    MD5: 76a7c8376de0e1a24800feba4a2f1d8c SHA-1: 2699b4bda6b8c9c8c10b74038bef005e83c92789

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(15.24 MB)
  • v0.3.0-alpha(Oct 30, 2021)

    QuantumGate

    This 0.3.0 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.1 or above) for Visual Studio 2019 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    What's new

    This version adds a major new feature: a UDP-based protocol that enables establishing connections to peers via UDP.

    Checksums for Binaries.zip

    MD5: c35c694865298a8076e77af9668b048d SHA-1: 918c0875c225ba198ef784fb33de671b6ffb8b44

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(15.22 MB)
  • v0.2.6-alpha(Apr 22, 2021)

    QuantumGate

    This 0.2.6 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.1 or above) for Visual Studio 2019 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    Bug fixes

    This version fixed compile errors with the latest version of Visual Studio 2019 (16.9.4) and fixes a bug that prevented a Global Shared Secret from being used in version 0.2.5.

    Checksums for Binaries.zip

    MD5: eda81c336ae65b1b05828f23a0acfc45 SHA-1: bc7e318034facd73f986509d9feddbac695ebca6

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(12.82 MB)
  • v0.2.5.1-alpha(Aug 16, 2020)

    QuantumGate

    This 0.2.5 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.1 or above) for Visual Studio 2019 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    Checksums for Binaries.zip

    MD5: e8857433c67fb902141fe5e0c108d711 SHA-1: 31f59c2dd4b829ca870b4b291f53bf8a4790e860

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(13.21 MB)
  • v0.2.4-alpha(Aug 10, 2020)

    QuantumGate

    This 0.2.4 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.1 or above) for Visual Studio 2019 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    Checksums for Binaries.zip

    MD5: b32588851278c91997bc635f2bd46129 SHA-1: bcf2297f6db14c4a2833116b45e2c9320fe7f52a

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(13.21 MB)
  • v0.2.3-alpha(Jul 21, 2020)

    QuantumGate

    This 0.2.3 alpha release includes pre-built binaries which you can download below along with the source code. The pre-built binaries allow you to easily try out QuantumGate without having to first set up a development environment with all the required dependencies and building the library from source code.

    You may need to install the latest version of Microsoft Visual C++ Redistributable (version 14.1 or above) for Visual Studio 2019 which you can get from Microsoft's website. If the Microsoft Visual C++ Redistributable files are not installed you will get an error when running the executable files.

    Both Debug and Release versions of all the pre-built binaries are included in this release for the Win32 (32-bit) and x64 (64-bit) Microsoft Windows platforms, while only the latest release of Windows 10 and 2019 Server are supported.

    Checksums for Binaries.zip

    MD5: d4c1620fa41de36ab59cb2b766e549c6 SHA-1: 94ec9618e78c8807e1c6833722e2f39a220b4129

    Source code(tar.gz)
    Source code(zip)
    Binaries.zip(13.10 MB)
  • v0.2.2-alpha(Jul 19, 2020)

  • v0.1-alpha(Dec 11, 2019)

    This is to mark the end of version 0.1 alpha supporting Visual Studio 2017 and C++17. Later releases will require Visual Studio 2019 and C++20. The public API also slightly changes after this version.

    Source code(tar.gz)
    Source code(zip)
Owner
Karel Donk
I'm an IT Consultant / Software Engineer, Graphic Designer and Photographer based in Suriname. Check my website for details at http://www.kareldonk.com/
Karel Donk
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.

Husarnet Client Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration. Key fe

Husarnet 180 Jan 1, 2023
Zyre - an open-source framework for proximity-based peer-to-peer applications

Zyre - Local Area Clustering for Peer-to-Peer Applications Linux & MacOSX Windows Contents Overview Scope and Goals Ownership and License Using Zyre B

The ZeroMQ project 813 Jan 3, 2023
Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

null 1 Nov 15, 2021
Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.

GameNetworkingSockets GameNetworkingSockets is a basic transport layer for games. The features are: Connection-oriented API (like TCP) ... but message

Valve Software 6.4k Dec 30, 2022
Simple local P2P chat on UDP sockets

Local P2P Chat This is a fully decentralized chat. To communicate, simply run it on computers in a single local network (using one port). All messages

Anton Khalitov 18 Dec 8, 2022
WARFOX is a software-based HTTPS beaconing Windows implant that uses a multi-layered proxy network for C2 communications.

An HTTPS beaconing Windows implant and multi-layered proxy C2 network designed for covert APT emulation focused offensive operations

null 85 Nov 25, 2022
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

Cesanta Software 9k Jan 1, 2023
This API uses both composition and inheritance to provide a generic way to set up a custom server with a custom communication protocol and custom middlewares

Ziapi Summary Introduction Installation Introduction This API uses both composition and inheritance to provide a generic way to set up a custom server

Aurélien Boch 8 Apr 22, 2022
The Telegram Bot API provides an HTTP API for creating Telegram Bots.

The Telegram Bot API provides an HTTP API for creating Telegram Bots.

Telegram Library 1.9k Jan 1, 2023
FreeRDP is a free remote desktop protocol library and clients

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

null 7.7k Dec 31, 2022
XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.

XQUIC 简体中文文档 README-zh-CN Introduction XQUIC Library released by Alibaba is … … a client and server implementation of QUIC and HTTP/3 as specified by

Alibaba 1.4k Dec 29, 2022
Boilerplate of a TCP Server written in C++ using the epoll API

tcp-server-boilerplate Boilerplate of a TCP Server written in C++ using the epoll API. Requirements cmake (if you want to use the provided build.sh sc

Leonardo Folgoni 20 Jan 23, 2022
Eclipse Paho C Client Library for the MQTT Protocol

Eclipse Paho C Client Library for the MQTT Protocol This repository contains the source code for the Eclipse Paho MQTT C client library. This code bui

null 2 Apr 27, 2022
Multi-protocol Port Mapping client library

libplum - Multi-protocol Port Mapping client library libplum (Port Lightweight and Universal Mapping) is a library allowing to forward ports on Networ

Paul-Louis Ageneau 18 Dec 26, 2022
:zap: KCP - A Fast and Reliable ARQ Protocol

KCP - A Fast and Reliable ARQ Protocol README in English 简介 KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP

Linwei 12k Jan 4, 2023
Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

Lightway Core NOTE: This is a preview snapshot of the Lightway repository used for both our client and server. We will be publishing a live, actively

ExpressVPN 22 Feb 17, 2022
Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

Lightway Core is a modern VPN protocol by ExpressVPN, to deliver a VPN experience that’s faster, more secure, and more reliable.

ExpressVPN 390 Dec 28, 2022
Winpcap-based network packet capture tool, support TLS (part), UDP, ICMP, TCP, ARP, DNS and other protocol analysis, interface reference wireshark.

Winpcap-based network packet capture tool, support TLS (part), UDP, ICMP, TCP, ARP, DNS and other protocol analysis, interface reference wireshark.

null 54 Dec 26, 2022
mvfst is a client and server implementation of IETF QUIC protocol in C++ by Facebook.

mvfst (Pronounced move fast) is a client and server implementation of IETF QUIC protocol in C++ by Facebook.

Meta Incubator 1.2k Jan 8, 2023