All Downloads are FREE. Search and download functionalities are using the official Maven repository.

etwork.1.20.source-code.README.md Maven / Gradle / Ivy

Network
=======

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/UDT. 

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)
 

- The available transports are TCP, UDP, and UDT
- There are simple wrapper classes for:
  - Server
  - Client
  - DNS Client (for querying DNS servers)
  - 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 32/64, and windows 32/64. Java 6+
    - Please note that Java6 runtimes have issues with their classloader loading classes recursively (you will get a StackOverflow exception). We have taken precautions to mitigate this, but be aware that it is a very real possibility. We recommend using Java7+ to prevent this issue.

``` java
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() {
          @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() {
          @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());

```



(We now release to maven!

There is a hard dependency in the POM file for the utilities library, which is an extremely small subset of a much larger library; including only what is *necessary* for this particular project to function. This project is **kept in sync** with the utilities library, so "jar hell" is not an issue. Please note that the util library (in it's entirety) is not added since there are **many** dependencies that are not *necessary* for this project. No reason to require a massive amount of dependencies for one or two classes/methods. ``` com.dorkbox Network 1.20 ``` Or if you don't want to use Maven, you can access the files directly here: https://oss.sonatype.org/content/repositories/releases/com/dorkbox/Network/ https://oss.sonatype.org/content/repositories/releases/com/dorkbox/Network-Dorkbox-Util/ https://oss.sonatype.org/content/repositories/releases/com/dorkbox/ObjectPool/ https://oss.sonatype.org/content/repositories/releases/com/dorkbox/MinLog-SLF4J/ https://repo1.maven.org/maven2/org/slf4j/slf4j-api/ https://repo1.maven.org/maven2/io/netty/netty-all/ (latest 4.1) https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/ https://repo1.maven.org/maven2/org/bouncycastle/bcpkix-jdk15on/ https://repo1.maven.org/maven2/asm/asm/ https://repo1.maven.org/maven2/org/javassist/javassist/ https://repo1.maven.org/maven2/com/esotericsoftware/jsonbeans/ https://repo1.maven.org/maven2/com/esotericsoftware/reflectasm/ https://repo1.maven.org/maven2/net/jpountz/lz4/lz4/ https://repo1.maven.org/maven2/org/objenesis/objenesis/ https://repo1.maven.org/maven2/com/esotericsoftware/kryo/

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.




© 2015 - 2025 Weber Informatics LLC | Privacy Policy