gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:21:03 26 4
gpt4 key购买 nike

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

最佳答案

您可以只在您的服务中监听 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();
}

关于c# - 用于检测网络更改事件的 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com