native-android-csharp/DemoAndroid/Activities/WakeOnLanActivity.cs
2024-06-19 16:16:38 +02:00

53 lines
1.3 KiB
C#

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);
}
}
}