4.0 KiB
🔥 EonaCat.FastNetwork 🔥
A lightweight, asynchronous, and secure networking framework for C# that provides TCP and UDP client-server communication with built-in AES encryption, SSL/TLS support, auto-reconnection, and heartbeat monitoring.
This project contains:
FastNetworkClient— A configurable client capable of connecting to servers over TCP or UDP.FastNetworkServer— A high-performance server capable of managing multiple clients, broadcasting messages, and monitoring connections.
🚀 Features
✅ Supports both TCP and UDP communication
✅ Asynchronous I/O with async/await
✅ Optional AES encryption for secure communication
✅ Optional SSL/TLS (via SslStream)
✅ Automatic reconnection logic for clients
✅ Heartbeat system for connection health checks
✅ Client nickname management
✅ Server broadcasting and targeted messaging
✅ Configurable limits (buffer size, timeouts, max connections, etc.)
⚙️ Configuration
Both the client and server use a FastNetworkConfig object to control behavior.
Example Configuration
var config = new FastNetworkConfig
{
Protocol = ProtocolType.TCP,
UseAES = true,
AESKey = "your-256-bit-key",
UseSSL = false,
AutoReconnect = true,
HeartbeatIntervalMs = 5000,
ReconnectDelayMs = 3000,
MaxReconnectAttempts = 5,
TimeoutMs = 10000,
BufferSize = 4096
};
💻 Usage:
🤩 Server Example
using EonaCat.FastNetwork;
using EonaCat.FastNetwork.Models;
using System;
using System.Text;
class Program
{
static async Task Main()
{
var config = new FastNetworkConfig
{
Protocol = ProtocolType.TCP,
UseAES = true,
AESKey = "your-256-bit-key",
AutoReconnect = true
};
var server = new FastNetworkServer(config);
server.ClientConnected += (s, info) =>
{
Console.WriteLine($"Client connected: {info.Id} ({info.RemoteEndPoint})");
};
server.MessageReceived += async (s, msg) =>
{
Console.WriteLine($"Message from {msg.SenderId}: {Encoding.UTF8.GetString(msg.Data)}");
await server.SendToClientAsync(msg.SenderId, Encoding.UTF8.GetBytes("Message received!"));
};
server.ClientDisconnected += (s, info) =>
{
Console.WriteLine($"Client disconnected: {info.Id}");
};
await server.StartAsync(5000);
Console.WriteLine("Server running on port 5000...");
Console.ReadLine();
}
}
😋 Client Example
using EonaCat.FastNetwork;
using EonaCat.FastNetwork.Models;
using System;
using System.Text;
class Program
{
static async Task Main()
{
var config = new FastNetworkConfig
{
Protocol = ProtocolType.TCP,
UseAES = true,
AESKey = "your-256-bit-key",
AutoReconnect = true
};
var client = new FastNetworkClient(config);
client.StateChanged += (s, state) =>
{
Console.WriteLine($"Client state: {state}");
};
client.MessageReceived += (s, data) =>
{
Console.WriteLine($"Received: {Encoding.UTF8.GetString(data)}");
};
await client.ConnectAsync("127.0.0.1", 5000);
Console.WriteLine("Connected to server.");
await client.SendAsync(Encoding.UTF8.GetBytes("Hello Server!"));
Console.ReadLine();
}
}
🔒 Security Options
🐦🔥AES Encryption
Enable AES encryption by setting:
config.UseAES = true;
config.AESKey = "your-256-bit-secret-key";
🦅SSL/TLS
Enable SSL by providing a certificate:
config.UseSSL = true;
config.Certificates = new[] { yourX509Certificate };
🔁 Auto-Reconnect & Heartbeat
The client will automatically attempt to reconnect if the connection fails, if AutoReconnect = true.
The server uses heartbeats and timeouts to monitor inactive clients and disconnect them.