- PR -

C#でipアドレスの処理

1
投稿者投稿内容
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2005-11-10 11:52
入力したipアドレス(10.50.1.1のような)を
ipアドレスかどうか判定する方法がわかりません。

数値ではないので、比較ができないようなのですが、
0000・・・・〜1111・・・・の間とか、
0.0.0.0〜255.255.255.255とか考えてみたのですが、
どうすればいいのでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-10 12:01
引用:

tamaiさんの書き込み (2005-11-10 11:52) より:

入力したipアドレス(10.50.1.1のような)を
ipアドレスかどうか判定する方法がわかりません。

数値ではないので、比較ができないようなのですが、
0000・・・・〜1111・・・・の間とか、
0.0.0.0〜255.255.255.255とか考えてみたのですが、
どうすればいいのでしょうか。


どこまで検証しますか? (グローバル IP かどうかとか判別しない?)
各アドレスが、0 〜 255 までなら有効とするのであれば、
4 つに分割して検証するだけだと思いますが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-11-10 12:10
何をどう比較したいのです?

正規表現との比較で、必要な書式を満たしているか判定する方法もあるでしょう。この場合は文字列として比較すれば良いですよね。

有効なIPアドレスか否か判定したいだけなら、IPAddress.Parseで十分でしょう。不正なIPアドレスなら例外が発生するはずです。

IPアドレス同士を比較したいなら、IPAddress.Equalsを使えばよいでしょう。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-10 12:51
引用:

甕星さんの書き込み (2005-11-10 12:10) より:

有効なIPアドレスか否か判定したいだけなら、IPAddress.Parseで十分でしょう。
不正なIPアドレスなら例外が発生するはずです。


1 回目に起きる例外で遅くなるのが難点ですよね。
.NET Framework 2.0 では、すべてに TryParse が実装されるようで嬉しいです。

  IPAddress.TryParse メソッド

やはり、1.1 では正規表現か、ピリオドから分割して検証メソッドを書くかになるでしょうね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tamai
会議室デビュー日: 2005/11/09
投稿数: 19
投稿日時: 2005-11-10 13:03
IPAddress.Parseを使用しています。
IPAddress ipAddress=IPAddress.Parse(入力テキスト);
で入力テキストがipアドレスじゃないと止まってしまいます。

例外処理を入れればいいのでしょうが、
ipAddressに入ったデータの比較方法がわかりません。
ipAddressに入ったデータは、表示すると10.50.1.1とかなっていますが、
ifとかで比較する場合に文字列なのでしょうか。
文字として分割して比較するのでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)