SFNet (Simple Fast Networking)

Hi, I am Gleade. I decided to start learning Java over the last few months and am quite interested in developing online games.
So I decided to start working on a networking library that will allow me to send raw data over a network. I have tried several networking libraries
already and could only find libraries that sent serialized objects over the network which provided a bit too much of a header for my simple tasks.

SFNet (Simple Fast Networking)

A simple Java networking library for TCP (no UDP yet) server-client connections.

The main idea behind this library is to allow the user to create fast networked games.
I have been influenced by a number of libraries already available, but I couldn’t find one that allowed you to send raw data over a network.

Currently supports:

  • server-client connections
  • easy-to-use packet container
  • sending / receiving packets
  • SQL database connections with an easy to column class

Repository:

Example:

Main:


public static void main(String args[])
{
    System.out.println("Server.");
    ServerStarter.listen(1337);
    ServerStarter.addListener(new ExampleServerListener());
    ClientStarter.connect("127.0.0.1", 1337);
    ClientStarter.addListener(new ExampleClientListener());

    Packet testPacket = new Packet();
    testPacket.writebyte((byte)1);
    testPacket.writestring("Hello World!");
    ClientStarter.sendPacket(testPacket);
}

Client Listener


public class ExampleClientListener implements SocketListener
{

    @Override
    public void received(Packet packet)
    {
        // Get the message ID of the packet
        int messageId = packet.readbyte();

        switch(messageId)
        {
            // Receive a string based message from a player
            case 1:
                String message = packet.readstring();
                System.out.println("Client: " + message);
                break;

                // Receive a positional based messaage from the player
            case 2:
                int x = packet.readbyte();
                int y = packet.readbyte();
                System.out.println("Player position update - x: " + x + " y: " + y);
                break;
        }
    }

}

Server Listener


public class ExampleServerListener implements SocketListener
{

    @Override
    public void received(Packet packet)
    {
        int messageId = packet.readbyte();

        switch(messageId)
        {
            // Receive a string based message from a player
            case 1:
                String message = packet.readstring();
                System.out.println("Server: " + message);
                ServerStarter.sendGlobalPacket(packet);
                break;

                // Receive a positional based messaage from the player
            case 2:
                int x = packet.readbyte();
                int y = packet.readbyte();
                System.out.println(" Server Player position update - x: " + x + " y: " + y);
                break;
        }
    }

}