[*]NitroNet is a library is used to simplify networking applications and decrease development time. It is multiplatform, supports UDP, TCP and HTTP, offers the ability to encrypt packets, includes packet corruption handling, packet streaming, SQL support, and much more. This library will allow you to quickly, easily, and efficiently develop networking applications.
Why Use NitroNet?
Networking is a very interesting part of programming but can be very confusing to setup and hard to understand. NitroNet simplifies the process of networking by allowing you to communicate between clients and servers through TCP and UDP with minimal effort.
Why not use other libraries like Kryonet you may ask? Kryonet has some issues with it and can be somewhat confusing to catch onto. It also does not offer many of the features that NitroNet has like packet corruption handling, encryption/decryption (to an extent), and packet streaming.
[*]I developed NitroNet with the idea in mind to simplify networking as much as possible for the user, but at the same time make it a very secure, efficient, and reliable library. The features it offers outdo features of other libraries and allow you to quickly and easily develop, what would typically be, complicated networking applications.
TCP and UDP: Easily send packets of information over any 2 of the protocols by using only one method.
Multiplatform: Use this application on any device that supports Java and communicate with the server from other languages like C#.
Complex Objects A.K.A. Packet Streaming: Send large objects over TCP or UDP by splitting them into smaller portions and recreating them on the receiving side. This is all done in the background of NitroNet and easily allows you to send large objects with only one method.
Encryption and Decryption: Encrypt and decrypt the raw bytes of the packets to protect from hackers.
Packet Corruption Handling: Prevents packets that are edited by a 3rd party software from being processed. Hackers are able to modify packets being sent over a network, but NitroNet stops this from happening and doesn’t allow edited packets to be processed.
SQL Support: Offers an interface, IDatabase, to be implemented and used to communicate with SQL databases. NitroNet comes with an implementation of the JDBC connection in the JDBCDatabase class.
[*]NitroNet is completely open-source and welcomes new additions and recommendations for the library. If a bug is found you can easily submit it and myself and other developers will work on fixing it. You can view the source code on the Github page. As time goes on a plan to add new extensions to the library and also optimize it to make it as fast as possible.
Why Is This Better Than Kryonet?
I actually developed NitroNet with Kryonet in mind, I did like the way that it handled connections, disconnections, and received packets. What I didn’t like was their serialization system and I also believed that I could add other features that would benefit many applications.
As you may know, a packet over 65535 bytes can’t be sent through TCP or UDP and this can be a huge headache for the developers that need to be able to send packets larger than that. That is where my complex object system comes in. It will take a packet it, split it up into smaller pieces, send it to the other side, and finally reform the object. This is all done with a single message which works seamlessly with the listening system.
[*]Another big issue I had was the corruption of packets. Say that a third party edited the bytes of a packet as it was being sent over. Using Kryonet you may not ever know that it happened. I implemented a corruption handling system that will test packets before they are sent through the listening system. If it is corrupted then it wont pass it through.
[*]The Github page contains both text and video tutorials that teach you how to get started and use NitroNet. Getting started is very simple and I recommend watching the video tutorials to get a good idea of how NitroNet works and how easy it is to use.
Online RPG: An online RPG game that uses NitroNet as the backend for all of the networking and database portions.
Do you have a project you’d like to have up here as an example? Feel free to message me on here and I will put it up as an example!