KingNetwork
v1.0.3 - Pool implementation and simple code refactor.
Exemple d'unité de cubes
Serveur Roi
https://www.nuget.org/packages/KingNetwork.Server/
Client Roi
https://www.nuget.org/packages/KingNetwork.Client/
Roi partagé
https://www.nuget.org/packages/KingNetwork.Shared/
// create and start the async server
var server = new KingServer ( port : 7171 ) ;
server . MessageReceivedHandler = OnMessageReceived ;
//ASync execution
await server . StartAsync ( ) ; //You can pass a out var cancellationToken in parameter
//Sync execution
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 ( ) ;
// 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 ( ) ;
// create and start the server
var server = new KingServer ( listenerType : NetworkListenerType . UDP , port : 7171 ) ;
server . MessageReceivedHandler = OnMessageReceived ;
//ASync execution
await server . StartAsync ( ) ; //You can pass a out var cancellationToken in parameter
//Sync execution
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 ( ) ;
// create and connect the client
var client = new KingClient ( listenerType : NetworkListenerType . UDP ) ;
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 ( ) ;
// create and start the server
var server = new KingServer ( listenerType : NetworkListenerType . RUDP , port : 7171 ) ;
server . MessageReceivedHandler = OnMessageReceived ;
//ASync execution
await server . StartAsync ( ) ; //You can pass a out var cancellationToken in parameter
//Sync execution
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!" ) ;
//You can use RudpMessageType.Reliable to send Reliable messages and RudpMessageType.Unreliable to send Unreliable messages
server . SendMessageToAll ( writer , RudpMessageType . Reliable ) ;
}
// stop the server when you don't need it anymore
server . Stop ( ) ;
// create and connect the client
var client = new KingClient ( listenerType : NetworkListenerType . RUDP ) ;
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!" ) ;
//You can use RudpMessageType.Reliable to send Reliable messages and RudpMessageType.Unreliable to send Unreliable messages
client . SendMessage ( writer , RudpMessageType . Reliable ) ;
}
// disconnect from the server when we are done
client . Disconnect ( ) ;
// create and start the server
var server = new KingServer ( listenerType : NetworkListenerType . WSText , port : 7171 ) ; // Or NetworkListenerType.WSBinary
server . MessageReceivedHandler = OnMessageReceived ;
//ASync execution
await server . StartAsync ( ) ; //You can pass a out var cancellationToken in parameter
//Sync execution
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 ( ) ;
// create and connect the client
var client = new KingClient ( listenerType : NetworkListenerType . WSText ) ; // Or NetworkListenerType.WSBinary
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 ( ) ;
Test de connexions
Nous testons également uniquement la bibliothèque KingNetwork brute en créant 1 serveur et 1 000 clients, chaque client envoyant 100 octets 14 fois par seconde et le serveur renvoyant le même message à chaque client. Ordinateur de test : Acer F 15 avec un processeur Intel Core i7 7gen à 2,9 GHz et 32 Go de RAM DDR4.
Résultats des tests :
Clientèle | Utilisation du processeur | Utilisation de la RAM | Client+Serveur de bande passante | Résultat |
---|---|---|---|---|
64 | 0,5% | 9 Mo | 0,3 Mo/s | Passé |
128 | 1% | 10 Mo | 0,7 Mo/s | Passé |
500 | 18% | 18 Mo | 2~3 Mo/s | Passé |
1000 | 32% | 26 Mo | 5~6 Mo/s | Passé |