Files
EonaCat.FastNetwork/README.md
2025-10-26 08:04:44 +01:00

4.0 KiB
Raw Permalink Blame History

🔥 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.