2016-03-11 03:55:43 +01:00
Network
=======
2019-03-17 16:45:10 +01:00
###### [![Dorkbox](https://badge.dorkbox.com/dorkbox.svg "Dorkbox")](https://git.dorkbox.com/dorkbox/Network) [![Github](https://badge.dorkbox.com/github.svg "Github")](https://github.com/dorkbox/Network) [![Gitlab](https://badge.dorkbox.com/gitlab.svg "Gitlab")](https://gitlab.com/dorkbox/Network) [![Bitbucket](https://badge.dorkbox.com/bitbucket.svg "Bitbucket")](https://bitbucket.org/dorkbox/Network)
2017-10-03 00:02:17 +02:00
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.
2016-03-11 03:55:43 +01:00
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)
2019-06-14 20:39:22 +02:00
- Firewall connections by IP+CIDR
- Specify the connection type (nothing, compress, compress+encrypt)
2016-03-11 03:55:43 +01:00
2017-10-03 00:02:17 +02:00
- The available transports are TCP and UDP
2016-03-11 03:55:43 +01:00
- There are simple wrapper classes for:
- Server
- Client
- MultiCast Broadcast client and server discovery
2016-03-18 16:16:22 +01:00
- Note: There is a maximum packet size for UDP, 508 bytes *to guarantee it's unfragmented*
2016-03-11 03:55:43 +01:00
2019-06-14 20:39:22 +02:00
- This is for cross-platform use, specifically - linux 32/64, mac 64, and windows 32/64. Java 11+
2019-03-17 21:16:59 +01:00
2016-03-11 03:55:43 +01:00
``` 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< 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());
```
2017-02-18 23:59:18 +01:00
2016-03-11 03:55:43 +01:00
2017-02-18 23:59:18 +01:00
Maven Info
---------
2016-03-11 03:55:43 +01:00
```
2017-07-23 18:02:50 +02:00
< dependencies >
...
< dependency >
< groupId > com.dorkbox< / groupId >
< artifactId > Network< / artifactId >
2019-06-14 22:02:06 +02:00
< version > 4.0< / version >
2017-07-23 18:02:50 +02:00
< / dependency >
< / dependencies >
2016-03-11 03:55:43 +01:00
```
2018-08-18 23:15:46 +02:00
Gradle Info
---------
````
dependencies {
...
2019-06-14 22:02:06 +02:00
compile 'com.dorkbox:Network:4.0'
2018-08-18 23:15:46 +02:00
}
````
2017-02-18 23:59:18 +01:00
License
---------
2016-04-05 14:47:40 +02:00
This project is © 2010 dorkbox llc, and is distributed under the terms of the Apache v2.0 License. See file "LICENSE" for further references.
2016-03-11 03:55:43 +01:00