using EonaCat.Transfer; using EonaCat.Transfer.Models; NetworkConfig networkConfig = new NetworkConfig() { Protocol = ProtocolType.TCP, Framing = FramingMode.Delimiter, Delimiter = new byte[] { 0x0A }, // LF EnableKeepAlive = true, KeepAliveIntervalMs = 15000, KeepAliveTimeoutMs = 5000, AutoReconnect = true, ReconnectDelayMs = 3000, }; var server = new TcpServer(networkConfig); server.ClientConnected += Server_ClientConnected; server.ClientDisconnected += Server_ClientDisconnected; server.MessageReceived += Server_MessageReceived; void Server_MessageReceived(object? sender, (ClientConnection Client, NetworkMessage Message) e) { string message = System.Text.Encoding.UTF8.GetString(e.Message.Payload); Console.WriteLine($"Received from {e.Client.Id}: {message}"); // Echo the message back to the client var responseMessage = new NetworkMessage(); responseMessage.Payload = System.Text.Encoding.UTF8.GetBytes($"Echo: {message}"); server.SendMessageAsync(e.Client, responseMessage); } void Server_ClientDisconnected(object? sender, ClientConnection e) { Console.WriteLine($"{e.Id} disconnected {e.RemoteEndPoint.ToString()}"); } void Server_ClientConnected(object? sender, ClientConnection e) { Console.WriteLine($"{e.Id} connected {e.RemoteEndPoint.ToString()}"); } var client = new TcpClient(networkConfig); client.Connected += Client_Connected; client.MessageReceived += Client_MessageReceived; client.Disconnected += Client_Disconnected; void Client_Disconnected(object? sender, EventArgs e) { Console.WriteLine("Client disconnected from server"); } void Client_MessageReceived(object? sender, NetworkMessage e) { string message = System.Text.Encoding.UTF8.GetString(e.Payload); Console.WriteLine($"Received from server: {message}"); } void Client_Connected(object? sender, EventArgs e) { Console.WriteLine("Client connected to server"); // Send a test message to the server var message = new NetworkMessage(); message.Payload = System.Text.Encoding.UTF8.GetBytes("Hello, Server!"); client.SendMessageAsync(message); } await server.StartAsync(9000); await client.ConnectAsync("127.0.0.1", 9000); // Generate traffic for (int i = 0; i < 10000; i++) { var message = new NetworkMessage(); message.Payload = System.Text.Encoding.UTF8.GetBytes($"Message {i + 1} from client"); await client.SendMessageAsync(message); await Task.Delay(100); } Console.WriteLine("Press ENTER to exit..."); Console.ReadLine();