225 lines
3.9 KiB
Markdown
225 lines
3.9 KiB
Markdown
# EonaCat.JASP Network Library
|
|
|
|
### Basic TCP Server
|
|
|
|
```csharp
|
|
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
|
|
|
|
```csharp
|
|
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
|
|
|
|
```csharp
|
|
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
|
|
|
|
```csharp
|
|
var client = new NetworkClient(
|
|
ProtocolType.TCP,
|
|
"127.0.0.1",
|
|
5000,
|
|
username: "Alice",
|
|
password: "SecurePassword123"
|
|
);
|
|
|
|
await client.ConnectAsync();
|
|
```
|
|
|
|
### Server with AES Encryption
|
|
|
|
```csharp
|
|
var server = new NetworkServer(
|
|
ProtocolType.TCP,
|
|
5000,
|
|
useAES: true
|
|
);
|
|
|
|
server.Start();
|
|
```
|
|
|
|
### Client with AES Encryption
|
|
|
|
```csharp
|
|
var client = new NetworkClient(
|
|
ProtocolType.TCP,
|
|
"127.0.0.1",
|
|
5000,
|
|
useAES: true
|
|
);
|
|
|
|
await client.ConnectAsync();
|
|
```
|
|
|
|
### UDP Server/Client
|
|
|
|
```csharp
|
|
// 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
|
|
|
|
```csharp
|
|
// 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
|
|
|
|
```csharp
|
|
// Server broadcasts to all connected clients
|
|
server.BroadcastString("Server announcement!");
|
|
|
|
// Broadcast to all except one client
|
|
server.BroadcastString("Message", excludeUsername: "Alice");
|
|
```
|
|
|
|
### Send Binary Data
|
|
|
|
```csharp
|
|
// Send byte array
|
|
byte[] imageData = File.ReadAllBytes("image.jpg");
|
|
client.SendData(imageData);
|
|
|
|
// Send to specific client
|
|
client.SendToClient("Bob", imageData);
|
|
```
|
|
|
|
### Network Statistics
|
|
|
|
```csharp
|
|
// 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
|
|
|
|
```csharp
|
|
var clients = server.GetConnectedClients();
|
|
foreach (var client in clients)
|
|
{
|
|
Console.WriteLine($"{client.Username} - {client.RemoteEndPoint}");
|
|
}
|
|
```
|
|
|
|
## Event Handlers
|
|
|
|
### Server Events
|
|
|
|
```csharp
|
|
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
|
|
|
|
```csharp
|
|
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}");
|
|
};
|
|
``` |