KingNetwork
v1.0.3 - Pool implementation and simple code refactor.
Contoh Kesatuan Kubus
Raja Server
https://www.nuget.org/packages/KingNetwork.Server/
Klien Raja
https://www.nuget.org/packages/KingNetwork.Client/
Raja Berbagi
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 ( ) ;
Tes Koneksi
Kami juga hanya menguji pustaka KingNetwork mentah dengan memunculkan 1 server dan 1000 klien, setiap klien mengirimkan 100 byte 14 kali per detik dan server mengulangi pesan yang sama kembali ke setiap klien. Komputer Uji: Acer F 15 dengan prosesor Intel Core i7 7gen 2,9 GHz dan ram DDR4 32 GB.
Hasil Tes:
Klien | Penggunaan CPU | Penggunaan Ram | Klien Bandwidth+Server | Hasil |
---|---|---|---|---|
64 | 0,5% | 9 MB | 0,3 MB/dtk | Lulus |
128 | 1% | 10 MB | 0,7 MB/dtk | Lulus |
500 | 18% | 18 MB | 2~3 MB/dtk | Lulus |
1000 | 32% | 26 MB | 5~6 MB/dtk | Lulus |