Initial version
This commit is contained in:
14
EonaCat.Transfer.Example/EonaCat.Transfer.Example.csproj
Normal file
14
EonaCat.Transfer.Example/EonaCat.Transfer.Example.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EonaCat.Transfer\EonaCat.Transfer.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
81
EonaCat.Transfer.Example/Program.cs
Normal file
81
EonaCat.Transfer.Example/Program.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
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();
|
||||
Reference in New Issue
Block a user