EonaCat.JASP Network Library
Basic TCP Server
using EonaCat.JASP;
var server = new NetworkServer(ProtocolType.TCP, 5000);
server.DataReceived += (s, e) =>
{
var message = Encoding.UTF8.GetString(e.Data);
Console.WriteLine($"Received: {message}");
};
server.Start();
Basic TCP Client
var client = new NetworkClient(ProtocolType.TCP, "127.0.0.1", 5000);
client.DataReceived += (s, e) =>
{
var message = Encoding.UTF8.GetString(e.Data);
Console.WriteLine($"Received: {message}");
};
await client.ConnectAsync();
client.SendString("Hello, Server!");
Advanced
Server with Authentication
var server = new NetworkServer(
ProtocolType.TCP,
5000,
username: "ServerAdmin",
password: "SecurePassword123"
);
server.ClientConnected += (s, e) =>
{
Console.WriteLine($"Authenticated client: {e.Username}");
};
server.Start();
Client with Authentication
var client = new NetworkClient(
ProtocolType.TCP,
"127.0.0.1",
5000,
username: "Alice",
password: "SecurePassword123"
);
await client.ConnectAsync();
Server with AES Encryption
var server = new NetworkServer(
ProtocolType.TCP,
5000,
useAES: true
);
server.Start();
Client with AES Encryption
var client = new NetworkClient(
ProtocolType.TCP,
"127.0.0.1",
5000,
useAES: true
);
await client.ConnectAsync();
UDP Server/Client
// Server
var server = new NetworkServer(ProtocolType.UDP, 5000);
server.Start();
// Client
var client = new NetworkClient(ProtocolType.UDP, "127.0.0.1", 5000);
await client.ConnectAsync();
Client-to-Client Messaging
// On Client 1 (Alice)
alice.SendToClient("Bob", "Hi Bob!");
// On Client 2 (Bob)
bob.DataReceived += (s, e) =>
{
if (e.FromUsername == "Alice")
{
Console.WriteLine($"Message from Alice: {Encoding.UTF8.GetString(e.Data)}");
}
};
Broadcasting to All Clients
// Server broadcasts to all connected clients
server.BroadcastString("Server announcement!");
// Broadcast to all except one client
server.BroadcastString("Message", excludeUsername: "Alice");
Send Binary Data
// Send byte array
byte[] imageData = File.ReadAllBytes("image.jpg");
client.SendData(imageData);
// Send to specific client
client.SendToClient("Bob", imageData);
Network Statistics
// Get server stats
var serverStats = server.GetStats();
Console.WriteLine(serverStats);
// Output:
// Stats:
// Uptime: 00:05:23
// Messages Sent: 15,234
// Messages Received: 15,234
// Bytes Sent: 1,523,400
// Bytes Received: 1,523,400
// Active Connections: 5
// Messages/sec: 47.23
// Errors: 0
// Get client stats
var clientStats = client.GetStats();
Console.WriteLine(clientStats);
Get Connected Clients
var clients = server.GetConnectedClients();
foreach (var client in clients)
{
Console.WriteLine($"{client.Username} - {client.RemoteEndPoint}");
}
Event Handlers
Server Events
server.DataReceived += (s, e) =>
{
// Handle received data
Console.WriteLine($"From: {e.FromUsername}");
Console.WriteLine($"Data: {Encoding.UTF8.GetString(e.Data)}");
};
server.ClientConnected += (s, e) =>
{
Console.WriteLine($"Client connected: {e.Username} ({e.ClientId})");
};
server.ClientDisconnected += (s, e) =>
{
Console.WriteLine($"Client disconnected: {e.Username}");
};
server.ErrorOccurred += (s, e) =>
{
Console.WriteLine($"Error: {e.Message}");
Console.WriteLine($"Exception: {e.Exception}");
};
Client Events
client.DataReceived += (s, e) =>
{
// Handle received data
};
client.Connected += (s, e) =>
{
Console.WriteLine("Connected to server");
};
client.Disconnected += (s, e) =>
{
Console.WriteLine("Disconnected from server");
};
client.ErrorOccurred += (s, e) =>
{
Console.WriteLine($"Error: {e.Message}");
};
Description
Languages
C#
100%