All Projects → balacode → udpt

balacode / udpt

Licence: MIT License
UDP Transport: compress, encrypt and send any data reliably over unreliable UDP connections

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to udpt

jfastnet
Fast, reliable UDP messaging for Java. Designed for games.
Stars: ✭ 26 (-35%)
Mutual labels:  udp, messaging
ngx stream upstream check module
nginx health checker (tcp/udp/http) for stream upstream servers.
Stars: ✭ 18 (-55%)
Mutual labels:  udp
iGap-Plus
An alternative official version iGap messenger client
Stars: ✭ 20 (-50%)
Mutual labels:  messaging
PsNetTools
PsNetTools is a cross platform PowerShell module to test network features on Windows, Linux and Mac.
Stars: ✭ 13 (-67.5%)
Mutual labels:  udp
qpid-dispatch
Mirror of Apache Qpid Dispatch
Stars: ✭ 62 (+55%)
Mutual labels:  messaging
iGap-API
iGap Core Messaging offer Open APIs for developers . This API allows you to build your own customized iGap clients.
Stars: ✭ 22 (-45%)
Mutual labels:  messaging
rfc
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 81 (+102.5%)
Mutual labels:  messaging
opengnb
GNB is open source de-centralized VPN to achieve layer3 network via p2p with the ultimate capability of NAT Traversal.GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。
Stars: ✭ 440 (+1000%)
Mutual labels:  udp
nats-account-server
A simple HTTP/NATS server to host JWTs for nats-server 2.0 account authentication.
Stars: ✭ 62 (+55%)
Mutual labels:  messaging
AG NTRIP ESP
AG Rooftop controller with NTRIP client and IMU (ESP32 Controller)
Stars: ✭ 25 (-37.5%)
Mutual labels:  udp
PokeChat
UNIX compatible, Discord and Telegram inspired, Pokémon-themed instant messaging service.
Stars: ✭ 11 (-72.5%)
Mutual labels:  messaging
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (-62.5%)
Mutual labels:  messaging
iniquity
A re-imagining of the iconic BBS software.
Stars: ✭ 35 (-12.5%)
Mutual labels:  messaging
MessagesView
view for displaying messages similarly to messages iOS system app
Stars: ✭ 16 (-60%)
Mutual labels:  messaging
eventide-postgres
Event Sourcing and Microservices Stack for Ruby
Stars: ✭ 92 (+130%)
Mutual labels:  messaging
mobizon-node
Biblioteca NodeJS para trabalhar com os serviços Mobizon API
Stars: ✭ 17 (-57.5%)
Mutual labels:  messaging
Python-Botnet
This is a simple DDoS python botnet script with remote monitoring & management for education purposes.
Stars: ✭ 119 (+197.5%)
Mutual labels:  udp
ENetUnityMobile
Using ENet-CSharp for a multiplayer setup with a Unity Client and .Net Core Server environment
Stars: ✭ 27 (-32.5%)
Mutual labels:  udp
ios-swift-chat-app
Open-source Voice & Video Calling and Text Chat App for Swift (iOS)
Stars: ✭ 111 (+177.5%)
Mutual labels:  messaging
dione
Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.
Stars: ✭ 41 (+2.5%)
Mutual labels:  messaging

udpt

UDP Transport

Go Report Card godoc License: MIT

Compresses, encrypts and transfers data between a sender and receiver using UDP protocol.

Features and Design Aims:

  • Avoid the overhead of establishing a TCP or TCP+TLS handshake.
  • Reliable transfer of data using an unreliable UDP connection.
  • Uses AES-256 symmetric cipher for encryption.
  • Uses zlib library for data compression.
  • No third-party dependencies. Only uses the standard library.
  • Readable, understandable code with explanatory comments.

Installation:

    go get github.com/balacode/udpt

Hello World:

This demo starts a Receiver which listens for incoming data, then sends a "Hello World" to the receiver using Sender.SendString().

package main

import (
    "fmt"

    "github.com/balacode/udpt"
)

// main demo
func main() {
    // secret encryption key shared by the Sender and Receiver
    cryptoKey := []byte("aA2Xh41FiC4Wtj3e5b2LbytMdn6on7P0")
    //
    // set-up and run the receiver
    rc := udpt.Receiver{Port: 9876, CryptoKey: cryptoKey,
        Receive: func(k string, v []byte) error {
            fmt.Println("Received k:", k, "v:", string(v))
            return nil
        }}
    go func() { _ = rc.Run() }()
    //
    // send a message to the receiver
    err := udpt.SendString("127.0.0.1:9876", "main", "Hello World!", cryptoKey)
    if err != nil {
        fmt.Println("failed sending:", err)
    }
    rc.Stop()
} //                                                                        main

Security Notice:

This is a new project and its use of cryptography has not been reviewed by experts. While I make use of established crypto algorithms available in the standard Go library and would not "roll my own" encryption, there may be weaknesses in my application of the algorithms. Please use caution and do your own security asessment of the code. At present, this library uses AES-256 in Galois Counter Mode to encrypt each packet of data, including its headers, and SHA-256 for hashing binary resources that are being transferred.

Version History:

This project is in its DRAFT stage: very unstable. At this point it works, but the API may change rapidly.

Ideas:

  • Create a drop-in replacement for TCP and TLS connections
  • Implement some form of transfer control
  • Improve performance
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].