Wake on lan demo added
This commit is contained in:
53
DemoAndroid/Activities/WakeOnLanActivity.cs
Normal file
53
DemoAndroid/Activities/WakeOnLanActivity.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace DemoAndroid;
|
||||
|
||||
[Activity(Label = "WakeOnLanActivity")]
|
||||
public class WakeOnLanActivity : Activity
|
||||
{
|
||||
protected override void OnCreate(Bundle? savedInstanceState)
|
||||
{
|
||||
base.OnCreate(savedInstanceState);
|
||||
|
||||
// Create your application here
|
||||
SetContentView(Resource.Layout.activity_wakeonlan);
|
||||
|
||||
var button = FindViewById<Button>(Resource.Id.btnWakeOnLan);
|
||||
button.Click += (sender, args) =>
|
||||
{
|
||||
WakePc();
|
||||
};
|
||||
}
|
||||
|
||||
private void WakePc()
|
||||
{
|
||||
byte[] macAddress = { 0x2c, 0x4d, 0x54, 0x4d, 0x10, 0x0f };
|
||||
byte[] magicPacket = new byte[102];
|
||||
|
||||
// Fill first 6 bytes with 0xFF
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
magicPacket[i] = 0xFF;
|
||||
}
|
||||
|
||||
// Repeat MAC address 16 times
|
||||
for (int i = 1; i <= 16; i++)
|
||||
{
|
||||
for (int j = 0; j < 6; j++)
|
||||
{
|
||||
magicPacket[i * 6 + j] = macAddress[j];
|
||||
}
|
||||
}
|
||||
|
||||
using var client = new UdpClient();
|
||||
client.EnableBroadcast = true;
|
||||
var endpoint = new IPEndPoint(IPAddress.Broadcast, 9); // 255.255.255.255 port 9
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
// Try 5 times
|
||||
client.Send(magicPacket, magicPacket.Length, endpoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user