High-performance, event-driven/reactive network stack for Java 11+
Go to file
nathan 661957cc65 Updated version from 4.0 to 4.1 2020-05-07 23:07:20 +02:00
gradle/wrapper updated gradle 2020-05-07 23:07:17 +02:00
src Fixed comments 2020-05-07 14:58:13 +02:00
test/dorkbox/network Relaxed how many runs for rmi delayed invocation test 2020-05-07 22:08:21 +02:00
.gitignore Updated to use Gradle Utils for gradle/project update management 2019-05-13 15:18:33 +02:00
LICENSE Updated license info 2019-01-13 17:46:03 +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.MIT Added license info. 2016-03-08 03:16:38 +01:00
README.md Updated version from 3.0 to 4.0 2019-06-14 22:02:57 +02:00
build.gradle.kts Updated version from 4.0 to 4.1 2020-05-07 23:07:20 +02:00
gradlew updated gradle 2020-05-07 23:06:31 +02:00
gradlew.bat updated gradle 2020-05-07 23:06:31 +02:00
settings.gradle.kts No longer depend on Utilities project, but on it's compiled sources. 2019-01-14 01:37:10 +01:00

README.md

Network

Dorkbox Github Gitlab Bitbucket

The Network project is an encrypted, high-performance, event-driven/reactive Network stack with DNS and RMI, using Netty, Kryo, KryoNet RMI, and LZ4 via TCP/UDP.

These are the main features:

  • The connection between endpoints is AES256-GCM / EC curve25519.

  • The connection data is LZ4 compressed and byte-packed for small payload sizes.

  • The connection supports:

  • Remote Method Invocation

    • Blocking
    • Non-Blocking
    • Void returns
    • Exceptions can be returned
  • 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 are TCP and UDP

  • There are simple wrapper classes for:

    • Server
    • Client
    • MultiCast Broadcast client and server discovery
  • Note: There is a maximum packet size for UDP, 508 bytes to guarantee it's unfragmented

  • This is for cross-platform use, specifically - linux 32/64, mac 64, and windows 32/64. Java 11+

public static
class AMessage {
    public
    AMessage() {
    }
}

KryoCryptoSerializationManager.DEFAULT.register(AMessage.class);

Configuration configuration = new Configuration();
configuration.tcpPort = tcpPort;
configuration.host = host;

final Server server = new Server(configuration);
addEndPoint(server);
server.bind(false);

server.listeners()
      .add(new Listener<AMessage>() {
          @Override
          public
          void received(Connection connection, AMessage object) {
              System.err.println("Server received message from client. Bouncing back.");
              connection.send()
                        .TCP(object);
          }
      });

Client client = new Client(configuration);
client.disableRemoteKeyValidation();
addEndPoint(client);
client.connect(5000);

client.listeners()
      .add(new Listener<AMessage>() {
          @Override
          public
          void received(Connection connection, AMessage object) {
              ClientSendTest.this.checkPassed.set(true);
              System.err.println("Tada! It's been bounced back.");
              server.stop();
          }
      });

client.send()
      .TCP(new AMessage());

   

Maven Info

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

Gradle Info

dependencies {
    ...
    compile 'com.dorkbox:Network:4.0'
}

License

This project is © 2010 dorkbox llc, and is distributed under the terms of the Apache v2.0 License. See file "LICENSE" for further references.