C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: IPアドレスのマスク


(過去ログ 76 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■44639 / inTopicNo.1)  IPアドレスのマスク
  
□投稿者/ なみえ (1回)-(2009/12/14(Mon) 16:30:18)

分類:[.NET 全般] 

現在vb.net VS2003 にて開発を行っています。
自端末のIPアドレスを加工したいのですが今一わかりません。
ネットで調べてはいるのですがこれだと言う物を探すことができてないです。

■問題
 自端末のIPをネットマスクしたい。
 172.30.10.4(自端末IP)を255.255.0.0のネットマスクをして
 172.30.0.0のIPアドレスを取得したい。
 
 Stringを使用して細かくプログラムを書けばできないことはないですが
 標準の関数を使用してスッキリできるのではないかとおもい質問させて
 頂きました。



引用返信 編集キー/
■44640 / inTopicNo.2)  Re[1]: IPアドレスのマスク
□投稿者/ επιστημη (2316回)-(2009/12/14(Mon) 16:51:37)
επιστημη さんの Web サイト
>  自端末のIPをネットマスクしたい。
>  172.30.10.4(自端末IP)を255.255.0.0のネットマスクをして
>  172.30.0.0のIPアドレスを取得したい。

' ↓めっちゃテキトー。

Module Program
  Sub Main()
    Dim input As String = "172.30.10.4"
    Dim tokens() As String = input.Split(New Char() {"."c})
    Dim mask() As Byte = { 255, 255, 0, 0 }
    Dim first As Boolean = True
    Dim I As Integer = 0
    For Each token As String In tokens
      If Not first Then
        Console.Write(".")
      Else
        first = Not first
      End If
      Console.Write(Byte.Parse(token) And mask(I))
      I = I + 1
    Next
  End Sub
End Module

引用返信 編集キー/
■44641 / inTopicNo.3)  Re[2]: IPアドレスのマスク
□投稿者/ みきぬ (685回)-(2009/12/14(Mon) 17:01:32)
直接的なものはないので、IPAddress をバイト配列に直してビット演算、かなあ。
επιστημηさんのソースをいぢってみた。

Imports System.Net

Module Program
    Sub Main()
        Dim bytes As Byte() = IPAddress.Parse("172.30.10.4").GetAddressBytes()
        Dim mask() As Byte = {255, 255, 0, 0}
        For i As Integer = 0 To bytes.Length - 1
            bytes(i) = bytes(i) And mask(i)
        Next
        Console.WriteLine(New IPAddress(bytes))
        Console.ReadLine()
    End Sub
End Module

引用返信 編集キー/
■44643 / inTopicNo.4)  Re[1]: IPアドレスのマスク
□投稿者/ 魔界の仮面弁士 (1418回)-(2009/12/14(Mon) 17:10:01)
No44639 (なみえ さん) に返信
>  172.30.10.4(自端末IP)を255.255.0.0のネットマスクをして
>  172.30.0.0のIPアドレスを取得したい。

手抜き実装。

Dim client, mask, result As System.Net.IPAddress
client = System.Net.IPAddress.Parse("172.30.10.4")
mask = System.Net.IPAddress.Parse("255.255.0.0")
result = New System.Net.IPAddress(client.Address And mask.Address)

MsgBox(result.ToString())

引用返信 編集キー/
■44714 / inTopicNo.5)  Re[2]: IPアドレスのマスク
□投稿者/ なみえ (3回)-(2009/12/16(Wed) 15:24:04)
No44643 (魔界の仮面弁士 さん) に返信
> ■No44639 (なみえ さん) に返信
>> 172.30.10.4(自端末IP)を255.255.0.0のネットマスクをして
>> 172.30.0.0のIPアドレスを取得したい。
>
> 手抜き実装。
>
> Dim client, mask, result As System.Net.IPAddress
> client = System.Net.IPAddress.Parse("172.30.10.4")
> mask = System.Net.IPAddress.Parse("255.255.0.0")
> result = New System.Net.IPAddress(client.Address And mask.Address)
>
> MsgBox(result.ToString())


返答遅くなり申し訳ありません。
ありがとうございます。
1番簡単な魔界の仮面弁士 さんのマスクを使用させていただきました。

解決済み
引用返信 編集キー/
■44717 / inTopicNo.6)  Re[3]: IPアドレスのマスク
□投稿者/ みきぬ (686回)-(2009/12/16(Wed) 15:52:48)
いちおう念のため。

No44714 (なみえ さん) に返信
> 返答遅くなり申し訳ありません。
> ありがとうございます。
> 1番簡単な魔界の仮面弁士 さんのマスクを使用させていただきました。
>
おそらくビルド時に警告が出ると思いますが、その理由を理解してから使ってくださいね。

# たぶん "手抜き実装" と書かれているのも、同じ理由だと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -