ネットワークの変更 (新しい IP アドレスなど) が発生したときにユーザーに通知するイベント リスナーを C# で作成する必要があります。これを行うさまざまな方法を見つけるために調査を試みましたが、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);
}
}
}
IPアドレスに関する情報は、NetworkInterface内にあります。
上記のサービスで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 に答える