Schnelles, zuverlässiges und nicht aufdringliches nachrichtenorientiertes virtuelles Netzwerkprotokoll für Java 6+.
Derzeit in der Alpha-Phase.
JNetRobust ist ein virtuelles Netzwerkprotokoll, das zwischen der Transport- und der Anwendungsschicht angesiedelt ist.
Vorteile
Vorbehalte
Wenn Sie keine Zuverlässigkeit benötigen, verwenden Sie UDP.
Wenn Sie Zuverlässigkeit benötigen und auf die Validierung warten können, verwenden Sie TCP.
Wenn Sie Zuverlässigkeit benötigen, aber vom Empfang nicht validierter Daten ohne Latenz profitieren, probieren Sie JNetRobust aus.
Es handelt sich um eine Bibliothek und es gibt keine Einschränkungen hinsichtlich der Art und Weise, wie Sie sie verwenden:
Sie können die Referenzimplementierung verwenden, die all diese Teile zusammenfügt, um loszulegen; Ein Beispiel ist unten aufgeführt.
Weitere Informationen finden Sie auf den Wiki-Seiten!
Hier ist ein minimales, vollständiges Beispiel für die Verwendung der bereitgestellten Referenzimplementierung:
Code
public class BidirectionalMain {
public static void main ( String [] args ) throws Exception {
String receivedMessage ;
// host addresses
InetSocketAddress ADDRESS_A = new InetSocketAddress ( InetAddress . getLocalHost (), 12345 );
InetSocketAddress ADDRESS_B = new InetSocketAddress ( InetAddress . getLocalHost (), 12346 );
// setup ProtocolHosts using the host's local address and registering all serialization dataTypes
// ProtocolHost supports multiplexing between different peers using respective topicId, remote address and dataType
ProtocolHost protocolHostA = new ProtocolHost ( "A" , ADDRESS_A , String . class );
ProtocolHandle < String > protocolHandleA = protocolHostA . register ( Byte . MIN_VALUE , ADDRESS_B );
ProtocolHost protocolHostB = new ProtocolHost ( "B" , ADDRESS_B , String . class );
ProtocolHandle < String > protocolHandleB = protocolHostB . register ( Byte . MIN_VALUE , ADDRESS_A );
// send from A
protocolHandleA . send ( Arrays . asList ( "Hi!" , "How you doing?" ));
System . out . println ();
Thread . sleep ( 100 );
// receive at B
while (( receivedMessage = protocolHandleB . receive ()) != null ) {
System . out . println ( "<B> t " + receivedMessage );
}
// send from B
protocolHandleB . send ( "Howdy! Fine, thanks." );
System . out . println ();
Thread . sleep ( 100 );
// receive at A
while (( receivedMessage = protocolHandleA . receive ()) != null ) {
System . out . println ( "<A> t " + receivedMessage );
}
}
}
Konsolenausgabe
[A]: Data sent -32767 Hi!
[A]: Data sent -32766 How you doing?
[B]: Data received ordered -32767 Hi!
[B]: Data received -32767 Hi!
[B]: Data received ordered -32766 How you doing?
[B]: Data received -32766 How you doing?
[B]: Newest data received -32766 How you doing?
<B> Hi!
<B> How you doing?
[B]: Data sent -32767 Howdy! Fine, thanks.
[A]: Data was received at other end -32767 Hi!
[A]: Data was received at other end -32766 How you doing?
[A]: Data received ordered -32767 Howdy! Fine, thanks.
[A]: Data received -32767 Howdy! Fine, thanks.
[A]: Newest data received -32767 Howdy! Fine, thanks.
<A> Howdy! Fine, thanks.
Maven
<!-- JNetRobust library; mandatory -->
< dependency >
< groupId >com.github.mucaho</ groupId >
< artifactId >jnetrobust-core</ artifactId >
< version >0.0.2</ version >
</ dependency >
<!-- JNetRobust examples; optional -->
< dependency >
< groupId >com.github.mucaho</ groupId >
< artifactId >jnetrobust-samples</ artifactId >
< version >0.0.2</ version >
</ dependency >
Manuelle Einrichtung
Sie können die jar
-Dateien aus dem Release-Bereich herunterladen und in Ihren Klassenpfad importieren.
Sie können die Dokumente auf der IO-Seite von JNetRobusts lesen.
Offene Issues und/oder offene Pull Requests . Vorschläge, Fehlerberichte, Codeverbesserungen und zusätzliche Funktionen sind herzlich willkommen!
Copyright (c) 2014 mucaho.
MPL 2.0. Lesen Sie die kurze Erklärung. Ich möchte dazu ermutigen, über Pull-Requests zu diesem ursprünglichen Repository beizutragen, wenn Sie Änderungen vorgenommen haben.