High-performance, event-driven/reactive network stack for Java 11+
 
 
Go to file
Robinson c197a2f627
logging
2024-02-05 21:58:00 +01:00
gradle/wrapper updated gradle 2023-10-17 16:48:02 +02:00
ignored_for_now/discovery More work done on cleaning up stack traces 2020-08-22 22:58:50 +02:00
not-fixed Added file transport to streaming manager 2023-07-16 14:57:04 +02:00
src logging 2024-02-05 21:58:00 +01:00
test/dorkboxTest/network Added more unit tests, increased multi-threading for mutli-client unit test 2023-12-04 13:37:18 +01:00
.gitignore Updated to use Gradle Utils for gradle/project update management 2019-05-13 15:18:33 +02:00
LICENSE update license 2023-11-28 21:39:14 +01:00
LICENSE.Apachev2 Added license info. 2016-03-08 03:16:38 +01:00
LICENSE.BSD2 Converted to gradle 2018-08-18 23:15:46 +02:00
LICENSE.BSD3 Added license info. 2016-03-08 03:16:38 +01:00
LICENSE.CC0 Added more license files 2020-08-09 13:35:47 +02:00
LICENSE.MIT Added license info. 2016-03-08 03:16:38 +01:00
LICENSE.MPLv2 Updated license 2023-06-29 20:02:11 +02:00
README.md Version 6.15 2023-11-16 12:08:30 +01:00
build.gradle.kts Updated build deps 2023-11-28 21:08:53 +01:00
gradle.properties Updated dependencies. 2021-10-01 10:44:55 +02:00
gradlew updated gradle 2023-10-17 16:48:02 +02:00
gradlew.bat updated gradle 2023-08-20 13:55:11 +02:00
logback.xml Cleaned up log messages, cleaned up handshakes, cleaned up polling code. Added unit test for concurrent client connections 2022-05-30 02:55:07 +02:00
settings.gradle.kts Updated classutils 2023-08-05 13:24:29 -06:00
storage.db Removed coroutines from parts of the networking message processing. 2022-07-27 00:20:34 +02:00

README.md

Network

Dorkbox Github Gitlab

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.

val configurationServer = ServerConfiguration()
configurationServer.settingsStore = Storage.Memory() // don't want to persist anything on disk!
configurationServer.port = 2000
configurationServer.enableIPv4 = true

val server: Server<Connection> = Server(configurationServer)

server.onMessage<String> { 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 = 2000

val client: Client<Connection> = Client(configurationClient)

client.onConnect {
    send("client test message")
}

client.connect()

   

Maven Info

<dependencies>
    ...
    <dependency>
      <groupId>com.dorkbox</groupId>
      <artifactId>Network</artifactId>
      <version>6.15</version>
    </dependency>
</dependencies>

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.