46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
|
using Microsoft.Extensions.Logging;
|
|||
|
using System;
|
|||
|
using System.Net.Sockets;
|
|||
|
|
|||
|
namespace NetworkResurrector.WakeOnLan
|
|||
|
{
|
|||
|
internal class WolClient : UdpClient
|
|||
|
{
|
|||
|
private readonly ILogger<WolClient> _logger;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Initializes a new instance of <see cref="WolClient"/>.
|
|||
|
/// </summary>
|
|||
|
public WolClient(ILogger<WolClient> logger) : base()
|
|||
|
{
|
|||
|
_logger = logger;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Sets up the UDP client to broadcast packets.
|
|||
|
/// </summary>
|
|||
|
/// <returns><see langword="true"/> if the UDP client is set in
|
|||
|
/// broadcast mode.</returns>
|
|||
|
public bool SetClientInBrodcastMode()
|
|||
|
{
|
|||
|
bool broadcast = false;
|
|||
|
if (this.Active)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
this.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 0);
|
|||
|
_logger.LogInformation("WolClient => SetClientInBrodcastMode succedded.");
|
|||
|
broadcast = true;
|
|||
|
}
|
|||
|
catch(Exception ex)
|
|||
|
{
|
|||
|
broadcast = false;
|
|||
|
_logger.LogError("WolClient => SetClientInBrodcastMode failed.", ex);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return broadcast;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|