我需要在 C# 中创建一个事件侦听器,让用户知道何时有网络更改(例如新的 IP 地址)。我已经尝试进行研究以找到不同的方法来做到这一点,但我没有看到如何在 C# 中专门完成它并完成我需要完成的所有任务。我正在使用此处提供的信息构建一个侦听器http://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y570但这对我也不起作用。投票对我来说可能是最好的选择,但如果有人可以帮助解决这个问题,将不胜感激。我在 XP 和 .NET 4.0 上运行。
问问题
5552 次
1 回答
4
你可以在你的服务中监听 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);
}
}
}
可以在 NetworkInterface 中找到有关 IP 地址的信息。
要在上述服务中获取 IP 地址信息,应该这样做:
IPInterfaceProperties adapterProperties = n.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
foreach (IPAddress address in addresses)
{
//do something with address.ToString();
}
于 2012-05-22T20:17:08.483 回答