-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathProgram.cs
50 lines (41 loc) · 1.51 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
using PacketDotNet;
using SharpPcap;
using System;
using System.Threading;
namespace Albion.Network.Example
{
internal class Program
{
private static IPhotonReceiver receiver;
private static void Main(string[] args)
{
ReceiverBuilder builder = ReceiverBuilder.Create();
builder.AddRequestHandler(new MoveRequestHandler());
builder.AddEventHandler(new MoveEventHandler());
builder.AddEventHandler(new NewCharacterEventHandler());
receiver = builder.Build();
Console.WriteLine("Start");
CaptureDeviceList devices = CaptureDeviceList.Instance;
foreach (var device in devices)
{
new Thread(() =>
{
Console.WriteLine($"Open... {device.Description}");
device.OnPacketArrival += new PacketArrivalEventHandler(PacketHandler);
device.Open(DeviceMode.Promiscuous, 1000);
device.StartCapture();
})
.Start();
}
Console.Read();
}
private static void PacketHandler(object sender, CaptureEventArgs e)
{
UdpPacket packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data).Extract<UdpPacket>();
if (packet != null && (packet.SourcePort == 5056 || packet.DestinationPort == 5056))
{
receiver.ReceivePacket(packet.PayloadData);
}
}
}
}