1

ネットワークの変更 (新しい IP アドレスなど) が発生したときにユーザーに通知するイベント リスナーを C# で作成する必要があります。これを行うさまざまな方法を見つけるために調査を試みましたが、C#で具体的に行う方法と、必要なすべてのタスクを達成する方法がわかりませんでした。ここで提供される情報を使用してリスナーを構築していますhttp://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y570しかし、これもうまくいきませんでした。投票は私にとって最良の選択肢かもしれませんが、誰かがこれを手伝ってくれるなら、それは大歓迎です. XP と .NET 4.0 を使用しています。

4

1 に答える 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 に答える