用于检测网络更改事件的 Windows 服务

本文关键字:Windows 服务 事件 检测 网络 用于 | 更新日期: 2023-09-27 18:35:10

我需要在 C# 中创建一个事件侦听器,以便在网络发生更改(如新的 IP 地址)时让用户知道。我尝试进行研究以找到不同的方法来执行此操作,但我看不到如何在 C# 中专门执行此操作并完成我需要完成的所有任务。我正在使用此处提供的信息构建侦听器 http://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y570 但这对我也不起作用。 投票对我来说可能是最好的选择,但如果有人能帮忙解决这个问题,将不胜感激。我在XP和.NET 4.0上运行。

用于检测网络更改事件的 Windows 服务

您可以只侦听服务中的 NetworkChange 事件:

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        InitializeComponent();
    }
    protected override void OnStart(string[] args)
    {
        NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkAddressChanged);
    }
    protected override void OnStop()
    {
    }
    private void NetworkAddressChanged(object sender, EventArgs e)
    {
        NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface n in adapters)
        {
            EventLog.WriteEntry("NetworkMonitor",String.Format("{0} is {1}", n.Name, n.OperationalStatus),EventLogEntryType.Warning);
        }
    }
}

有关 IP 地址的信息可以在 NetworkInterface 中找到。

要在上述服务中获取IP地址信息,这样的事情应该可以解决问题:

IPInterfaceProperties adapterProperties = n.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
foreach (IPAddress address in addresses)
{
    //do something with address.ToString();
}