Initial version
This commit is contained in:
226
README.md
226
README.md
@@ -1,3 +1,225 @@
|
||||
# EonaCat.JASP
|
||||
# EonaCat.JASP Network Library
|
||||
|
||||
EonaCat.JASP
|
||||
### 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}");
|
||||
};
|
||||
```
|
||||
Reference in New Issue
Block a user