自分のブログへのアクセス解析をする場合、自分のIPアドレスは除外しておきたいものです。ところがIPアドレスは不変ではなく変化します。自分のIPアドレスが変更されたときに気づくことができるアプリをつくります。
PHPファイルを以下を記述して適当なサーバーにアップロードします。
1 2 3 4 |
<?php // IPアドレスを表示 $addr = $_SERVER["REMOTE_ADDR"]; // IPアドレス echo $addr; |
ここからあなたのIPアドレスがわかります。
https://lets-csharp.com/sample/get-ip/get-ip.php
動的IPアドレスでIPが変わるタイミングは、モデムやONUをインターネット回線から切断した時です。一般的にパソコンを再起動したときには変更されませんが、いつの間にか変更されていることがあります。そこでIPアドレスを調べて保存しておき、再起動したときやスリープ状態から復帰したタイミングで前回保存していたものと同じかどうかを調べます。
また常駐させたほうがよいのでNotifyIconを使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
public partial class Form1 : Form { WebClient webClient = new WebClient(); Timer Timer = new Timer(); public Form1() { InitializeComponent(); Timer.Interval = 1000 * 60 * 10; // 10分に1回調べる Timer.Tick += Timer_Tick; Timer.Start(); this.NotifyIcon1.Text = "IPアドレス監視中"; this.NotifyIcon1.Visible = true; this.NotifyIcon1.MouseClick += this.NotifyIcon1_MouseClick; CheckIP(); } void CheckIP() { string nowIP = webClient.DownloadString("https://lets-csharp.com/sample/get-ip/get-ip.php"); string path = Application.StartupPath + "\\ip.txt"; if (File.Exists(path)) { StreamReader sr = new StreamReader(path); string oldIP = sr.ReadToEnd(); sr.Close(); if (oldIP != nowIP) { StreamWriter sw = new StreamWriter(path); sw.Write(nowIP); sw.Close(); string str = String.Format("{0} => {1}", oldIP, nowIP); MessageBox.Show(str, "IPアドレスが変更されています"); } } else { StreamWriter sw = new StreamWriter(path); sw.Write(nowIP); sw.Close(); } label1.Text = nowIP; } private void Timer_Tick(object sender, EventArgs e) { CheckIP(); } private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) { this.Visible = true; } bool isEnd = false; protected override void OnClosing(CancelEventArgs e) { if (!isEnd) { this.Visible = false; e.Cancel = true; } base.OnClosing(e); } } |