Jfastnet
Fast, reliable UDP messaging for Java. Designed for games.
Install / Use
/learn @klaus7/JfastnetREADME
JFastNet
Fast, reliable and easy UDP messaging for Java. Designed for games.
JFastNet is tolerant towards packet loss and when used in the right way it can provide your players with a smooth network gaming experience even in bad network conditions.
The API of this library is subject to change.
Maven
The dependency for your POM:
<dependency>
<groupId>com.jfastnet</groupId>
<artifactId>jfastnet</artifactId>
<version>0.3.8</version>
</dependency>
Example code
The following code shows the important parts of a server-client communication:
Server server = new Server(new Config().setBindPort(15150));
Client client = new Client(new Config().setPort(15150));
server.start();
client.start();
client.blockingWaitUntilConnected();
server.send(new PrintMessage("Hello Client!"));
client.send(new PrintMessage("Hello Server!"));
Click to see full sample code of HelloWorld.java
Roadmap
- More documentation
Documentation
A comprehensive documentation can be found in the DOCUMENTATION.md file.
The documentation is still a work-in-progress.
The most important classes to look for in the beginning are the Config and the Message class. The JavaDoc there should provide you with the basic configuration possibilities of the library.
Reliable sending
There are currently two ways you can use to send a message in a reliable way. Sending the message unreliably is of course also an option.
- Acknowledge packet
- Sequence number
Acknowledge packet
The receiver of a message with reliable mode set to ACK_PACKET will send an acknowledge packet to the other end upon receipt of the message.
As long as the sender of the prior mentioned message doesn't receive an acknowledge packet it will keep resending the message.
Attribute | Value --------- |:---: Reliable | yes Ordered | no
Sequence number
The receiver of a message with reliable mode set to SEQUENCE_NUMBER will do nothing as long as the messages arrive in the expected order.
But if a message with an id greater than expected is received, the receiver will stop processing the messages and send a RequestSeqIdsMessage to the other end.
Processing will not continue until all required messages are received.
Attribute | Value --------- |:---: Reliable | yes Ordered | yes
It's usually advisable to use sequence numbers, as there will be less overhead and also the ordered delivery is guaranteed.
Build
Use maven to build JFastNet:
mvn clean install
Thanks
Kryo is the default serialiser used in JFastNet and is a pleasure to work with! Thanks very much for this awesome library!
Project Lombok also deserves a mention, as it makes working with Java much more comfortable and the code looks cleaner. Check it out if you don't have already.
Contact
Post issues to the issues page or contact me via email at support@jfastnet.com for other inquiries.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
