A (slightly) modified version of the RUDP libary written by Adrian Granados (not me, copyright for this goes to him. See RUDP/license.txt for details).
R-UDP means "Reliable UDP". A description of the protocol can be found here https://datatracker.ietf.org/doc/html/draft-ietf-sigtran-reliable-udp-00
You can download a up to date pre-compiled version of this API here (Compiled with Java 11): https://build.germancoding.com/job/RUDP/lastSuccessfulBuild/artifact/RUDP/rudp-SNAPSHOT.jar
Of course you can also download/clone the source and compile it for yourself. There are no dependencies, the project was tested working on Java 6/7/8.
The design of the library is very similar (if not equal) to the Java socket API. To create a new connection with RUDP, do the same thing you would do with Java TCP/IO. The library will handle most stuff in the background, just like TCP.
// For the server
ReliableServerSocket serverSocket = new ReliableServerSocket(0);
Socket someRUDPClient = serverSocket.accept();
// For the client
ReliableSocket client = new ReliableSocket();
client.connect(serverSocket.getLocalSocketAddress());
/* This is just an example, for a real tutorial look up Java sockets */
I also added an option to use pre-existing (and already bound) UDP sockets for the RUDP connection, just pass them as parameter to the constructor.
The javadoc of this project is available here:: https://build.germancoding.com/job/RUDP/javadoc/