All Projects → Vengarioth → netstack

Vengarioth / netstack

Licence: MIT license
A batteries included networking crate for games.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to netstack

Pypacker
📦 The fastest and simplest packet manipulation lib for Python
Stars: ✭ 216 (+440%)
Mutual labels:  udp
React Native Udp
node's dgram for react-native
Stars: ✭ 238 (+495%)
Mutual labels:  udp
GenuineChannels
Collection of custom .NET Remoting channels
Stars: ✭ 29 (-27.5%)
Mutual labels:  udp
Openseeface
Robust realtime face and facial landmark tracking on CPU with Unity integration
Stars: ✭ 216 (+440%)
Mutual labels:  udp
Ssokit Qmake
A Simple & Strong Tool for TCP&UDP Debug
Stars: ✭ 231 (+477.5%)
Mutual labels:  udp
Netcode.io Browser
Browser extensions which enable the use of netcode.io (secure UDP) prior to adoption in web browsers
Stars: ✭ 245 (+512.5%)
Mutual labels:  udp
Ohsce
PHP HI-REL SOCKET TCP/UDP/ICMP/Serial .高可靠性PHP通信&控制框架SOCKET-TCP/UDP/ICMP/硬件Serial-RS232/RS422/RS485 AND MORE!
Stars: ✭ 206 (+415%)
Mutual labels:  udp
HelenaFramework
Modern framework on C++20 for backend/frontend development.
Stars: ✭ 53 (+32.5%)
Mutual labels:  udp
Network
C# Network Library
Stars: ✭ 237 (+492.5%)
Mutual labels:  udp
spp
A simple and powerful proxy
Stars: ✭ 575 (+1337.5%)
Mutual labels:  udp
Gnb
GNB is open source de-centralized VPN to achieve layer3 network via p2p with the ultimate capability of NAT Traversal.GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。
Stars: ✭ 225 (+462.5%)
Mutual labels:  udp
Pjon
PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
Stars: ✭ 2,615 (+6437.5%)
Mutual labels:  udp
Mongols
C++ high performance networking with TCP/UDP/RESP/HTTP/WebSocket protocols
Stars: ✭ 250 (+525%)
Mutual labels:  udp
Pss
This is a based plug-in framework that provides cross-platform IO and logically separated plug-in services.
Stars: ✭ 219 (+447.5%)
Mutual labels:  udp
SpooferBT
Relay torrent tracker communication via TCP to bypass a blocked UDP network.
Stars: ✭ 18 (-55%)
Mutual labels:  udp
Example Mediapipe Udp
Connecting openFrameworks to Google MediaPipe Machine Learning Framework over UDP
Stars: ✭ 217 (+442.5%)
Mutual labels:  udp
Rsock
The best companion of kcptun
Stars: ✭ 242 (+505%)
Mutual labels:  udp
sx
🖖 Fast, modern, easy-to-use network scanner
Stars: ✭ 1,267 (+3067.5%)
Mutual labels:  udp
AMP-Research
Research on UDP/TCP amplification vectors, payloads and mitigations against their use in DDoS Attacks
Stars: ✭ 246 (+515%)
Mutual labels:  udp
DDos-Attack-OVH-
Powerful DDoS Attack
Stars: ✭ 155 (+287.5%)
Mutual labels:  udp

netstack

A batteries included networking crate for games.

crates.io 📦

[dependencies]
netstack = "0.3.0"

docs.rs 🗎

Documentation (work in progress)

getting in touch 💬

If you have suggestions, miss features or just want to get in touch, you can open issues in this repository or get a hold of me on twitter.

requirements

To effectively use netstack in production you need a secure channel to exchange an initial secret and connection token. It is recommended to use https for this, but it's up to you. The examples use a http server.

features ☑️

(☑️ means implemented, 🚧 means planned or under development)

  • ☑️ UDP Transport
  • ☑️ Connection Management (connecting, heartbeats, timeouts, disconnects 🚧)
  • ☑️ Packet Signing (HMAC SHA256)
  • ☑️ Packet Acknowledgement (sequence numbers, acks, replay protection)
  • 🚧 Derive Macro for easy binary serialization
  • 🚧 Monitoring
  • 🚧 Buffer Management
  • 🚧 Switch between packet signing (bigger packet header) and encryption (more cpu hungry)

non-goals

Event based I/O

Transports based on io_uring, IOCP or epoll are out of scope right now.

Reliable Transmission

This crate does not implement retransmission based on acks and timeouts. Games have other ways of achieving reliability, mostly because information is already outdated by the time any timeout based mechanism would detect the lost packet.

FPS for instance send player input for the last couple of frames with every packet, so when one gets lost on the wire the next packet fills in the gap.

Compression of game state from the server to the client is usually based on the last packet acknowledged by the client. Use the MessageAcknowledged event and the sequence number returned by send for this.

examples 🔌

See the examples directory for a client/server example, use the commands to run them:

  • server: cargo run -p server
  • client: cargo run -p client

netstack_derive 🚧

Netstack comes with a work in progress derive macro for structs (and later enums).

#[derive(Debug, Serialize, Deserialize)]
pub struct Greeting {
    pub id: u32,
    pub to: String,
    pub message: String,
}

license 📃

MIT

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].