-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
71 lines (58 loc) · 2.05 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
void OnServerDataReceived(
byte[] data)
{
Console.WriteLine($"Server received Data Length: {data.Length}");
var dataStr = Encoding.ASCII
.GetString(data)
.RemoveNonPrintableCharacter();
Console.WriteLine($"Server received Data: {dataStr}");
}
void OnClientDataReceived(
byte[] data)
{
Console.WriteLine($"Client received Data Length: {data.Length}");
var dataStr = Encoding.ASCII
.GetString(data)
.RemoveNonPrintableCharacter();
Console.WriteLine($"Client received Data: {dataStr}");
}
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddConsole();
});
var loggerServer = loggerFactory.CreateLogger<UdpServer>();
var loggerClient = loggerFactory.CreateLogger<UdpClient>();
var udpServer = new UdpServer(
loggerServer,
new IPEndPoint(IPAddress.Loopback, 27001),
new UdpServerConfig
{
EchoOnReceivedData = true,
});
udpServer.DataReceived += OnServerDataReceived;
await udpServer.StartAsync(CancellationToken.None);
var udpClient = new UdpClient(
loggerClient,
new IPEndPoint(IPAddress.Loopback, 27001));
udpClient.Connected += () => Console.WriteLine("Connected");
udpClient.Disconnected += () => Console.WriteLine("Disconnected");
udpClient.ConnectionStateChanged += (_, args) => Console.WriteLine($"Connection state: {args.State}");
udpClient.DataReceived += OnClientDataReceived;
if (!await udpClient.Connect())
{
Console.WriteLine("Cannot connect");
udpClient.Dispose();
return;
}
await udpClient.Send("Hallo", CancellationToken.None);
await udpClient.Send("World..", CancellationToken.None);
await udpClient.Send("ping", CancellationToken.None);
await udpServer.Send(new IPEndPoint(IPAddress.Loopback, 27002), "The UdpServer say hallo", CancellationToken.None);
await Task.Delay(TimeSpan.FromMilliseconds(500));
await udpClient.Disconnect();
udpClient.Dispose();
await udpServer.StopAsync(CancellationToken.None);
udpServer.Dispose();
Console.WriteLine("Press any key for quit");
Console.ReadLine();