https://github.com/dorkbox/network
High-performance, event-driven/reactive network stack for Java 11+
https://github.com/dorkbox/network
aeron networking udp
Last synced: 5 months ago
JSON representation
High-performance, event-driven/reactive network stack for Java 11+
- Host: GitHub
- URL: https://github.com/dorkbox/network
- Owner: dorkbox
- License: other
- Created: 2016-03-06T23:09:42.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-12T21:24:28.000Z (over 1 year ago)
- Last Synced: 2025-03-31T22:41:29.629Z (6 months ago)
- Topics: aeron, networking, udp
- Language: Kotlin
- Homepage:
- Size: 6.02 MB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Network
=======###### [](https://git.dorkbox.com/dorkbox/Network) [](https://github.com/dorkbox/Network) [](https://gitlab.com/dorkbox/Network)
The Network project is an ~~encrypted~~, high-performance, event-driven/reactive Network stack with DNS and RMI, using Aeron, Kryo, KryoNet RMI, ~~encryption and LZ4 via UDP.~~
These are the main features:
~~* The connection between endpoints is AES256-GCM / EC curve25519. (WIP, this was updated for use with Aeron, which changes this)~~
~~* The connection data is LZ4 compressed and byte-packed for small payload sizes. (WIP, this was updated for use with Aeron, which
changes this)~~
### The connection supports:
- Sending object (via the Kryo serialization framework)
- Sending arbitrarily large objects
- Remote Method Invocation
- Blocking
- Non-Blocking
- Void returns
- Exceptions can be returned
- Kotlin coroutine suspend functions
- ~~Sending data when Idle~~
- "Pinging" the remote end (for measuring round-trip time)
- Firewall connections by IP+CIDR
- ~~Specify the connection type (nothing, compress, compress+encrypt)~~
- The available transports is UDP- This is for cross-platform use, specifically - linux 32/64, mac 64, and windows 32/64. Java 1.11+
- This library is designed to be used with kotlin, specifically the use of coroutines.
``` java
val configurationServer = ServerConfiguration()
configurationServer.settingsStore = Storage.Memory() // don't want to persist anything on disk!
configurationServer.port = 2000
configurationServer.enableIPv4 = trueval server: Server = Server(configurationServer)
server.onMessage { message ->
logger.error("Received message '$message'")
}server.bind()
val configurationClient = ClientConfiguration()
configurationClient.settingsStore = Storage.Memory() // don't want to persist anything on disk!
configurationClient.port = 2000val client: Client = Client(configurationClient)
client.onConnect {
send("client test message")
}client.connect()
```
Maven Info
---------
```...
com.dorkbox
Network
6.15
```
Gradle Info
---------
```
dependencies {
...
implementation("com.dorkbox:Network:6.15")
}
```License
---------
This project is © 2023 dorkbox llc, and is distributed under the terms of the Apache v2.0 License. See file "LICENSE" for further
references.