Protocole de réseau virtuel orienté message rapide, fiable et non intrusif pour Java 6+.
Actuellement en alpha.
JNetRobust est un protocole de réseau virtuel qui réside entre la couche transport et la couche application.
Avantages
Mises en garde
Si vous n'avez pas besoin de fiabilité, utilisez UDP.
Si vous avez besoin de fiabilité et que vous pouvez attendre qu'elle soit validée, utilisez TCP.
Si vous avez besoin de fiabilité, mais que vous bénéficiez de la réception de données non validées sans latence, essayez JNetRobust.
Il s'agit d'une bibliothèque et n'impose aucune restriction sur la façon dont vous l'utilisez :
Vous pouvez utiliser l'implémentation de référence qui rassemble toutes ces pièces pour commencer ; un exemple est répertorié ci-dessous.
Référez-vous aux pages Wiki pour plus d'informations !
Voici un exemple minimal et complet d’utilisation de l’implémentation de référence fournie :
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 );
}
}
}
Sortie console
[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 >
Configuration manuelle
Vous pouvez télécharger les jar
à partir de la section release et les importer dans votre chemin de classe.
Vous pouvez lire la documentation sur la page IO de JNetRobusts.
Problèmes ouverts et/ou demandes d’extraction ouvertes . Les suggestions, rapports de bogues, améliorations du code et fonctionnalités supplémentaires sont les bienvenus !
Copyright (c) 2014 mucaho.
MPL2.0. Lisez une brève explication. Je voudrais encourager la contribution à ce référentiel original via des pull request, si vous avez apporté des modifications.