Skip to content

torchesburn/KingNetwork

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIT License Discord GitHub stars

Examples

Cubes Unity Example


Nuget Packages

King Server
https://www.nuget.org/packages/KingNetwork.Server/

King Client
https://www.nuget.org/packages/KingNetwork.Client/

King Shared
https://www.nuget.org/packages/KingNetwork.Shared/

Using the TCP connection on KingServer

// create and start the server
var server = new KingServer(port: 7171);
server.MessageReceivedHandler = OnMessageReceived;
server.Start();

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IClient client, IKingBufferReader reader)
{
    Console.WriteLine($"Received data from client {client.Id}, data length {reader.Length()}");
}

// send a message to all clients
using(var writer = KingBufferWriter.Create())
{
    writer.Write("Test message!");
    server.SendMessageToAll(writer);
}

// stop the server when you don't need it anymore
server.Stop();

Using the TCP connection on KingClient

// create and connect the client
var client = new KingClient();
client.MessageReceivedHandler = OnMessageReceived;
client.Connect("127.0.0.1", 7171);

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IKingBufferReader reader)
{
    Console.WriteLine($"Received data from server, data length {reader.Length()}");
}

/// send a message to server
using(var writer = KingBufferWriter.Create()
{
    writer.Write("Test message!");
    client.SendMessage(writer);
}

// disconnect from the server when we are done
client.Disconnect();

Using the UDP connection on KingServer

// create and start the server
var server = new KingServer(port: 7171);
server.MessageReceivedHandler = OnMessageReceived;
server.Start(NetworkListenerType.UDP);

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IClient client, IKingBufferReader reader)
{
    Console.WriteLine($"Received data from client {client.Id}, data length {reader.Length()}");
}

// send a message to all clients
using(var writer = KingBufferWriter.Create())
{
    writer.Write("Test message!");
    server.SendMessageToAll(writer);
}

// stop the server when you don't need it anymore
server.Stop();

Using the UDP connection on KingClient

// create and connect the client
var client = new KingClient();
client.MessageReceivedHandler = OnMessageReceived;
client.Connect("127.0.0.1", 7171, NetworkListenerType.UDP);

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IKingBufferReader reader)
{
    Console.WriteLine($"Received data from server, data length {reader.Length()}");
}

/// send a message to server
using(var writer = KingBufferWriter.Create()
{
    writer.Write("Test message!");
    client.SendMessage(writer);
}

// disconnect from the server when we are done
client.Disconnect();

Using the WebSocket connection on KingServer

// create and start the server
var server = new KingServer(port: 7171);
server.MessageReceivedHandler = OnMessageReceived;
server.Start(NetworkListenerType.WSText); // Or NetworkListenerType.WSBinary

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IClient client, IKingBufferReader reader)
{
    Console.WriteLine($"Received data from client {client.Id}, data length {reader.Length()}");
}

// send a message to all clients
using(var writer = KingBufferWriter.Create())
{
    writer.Write("Test message!");
    server.SendMessageToAll(writer);
}

// stop the server when you don't need it anymore
server.Stop();

Using the WebSocket connection on KingClient

// create and connect the client
var client = new KingClient();
client.MessageReceivedHandler = OnMessageReceived;
client.Connect("127.0.0.1", 7171, NetworkListenerType.WSText); // Or NetworkListenerType.WSBinary

// implements the callback for MessageReceivedHandler
private void OnMessageReceived(IKingBufferReader reader)
{
    Console.WriteLine($"Received data from server, data length {reader.Length()}");
}

/// send a message to server
using(var writer = KingBufferWriter.Create()
{
    writer.Write("Test message!");
    client.SendMessage(writer);
}

// disconnect from the server when we are done
client.Disconnect();

TCP Benchmarks

Connections Test
We also test only the raw KingNetwork library by spawing 1 server and 1000 clients, each client sending 100 bytes 14 times per second and the server echoing the same message back to each client. Test Computer: Acer F 15 with a 2,9 GHz Intel Core i7 7gen processor and 32 GB ram DDR4.
Test Results:

Clients CPU Usage Ram Usage Bandwidth Client+Server Result
64 0.5% 9 MB 0.3 MB/s Passed
128 1% 10 MB 0.7 MB/s Passed
500 18% 18 MB 2~3 MB/s Passed
1000 32% 26 MB 5~6 MB/s Passed

About

KingNetwork is an open source library to facilitate the creation and communication of clients and servers through TCP, UDP and Web sockets.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%