自PCのIPアドレス取得

解決


独学者  2010-06-25 12:06:20  No: 146939

vb2008にて自PCのIPアドレスを取得しようとしています

Imports System.Net
:
:
Dim ComputerIp As IPHostEntry
Dim ComputerIp As IPAddres

ComputerName= System.Environment.GetEnvironmentVariable("COMPUTERNAME")

IpHost= Dns.GetHostByName(ComputerName)

ComputerIp = IpHost.AddressList(0)
:

Dns.GetHostByNameは旧形式の警告が発生します
実際に起動してもここで停止してしまいます。
.NET Framework3.5では別の方法があるのでしょうか


魔界の仮面弁士  2010-06-25 18:17:08  No: 146940

問題点を正しく伝えられるよう、再現性のあるコードを貼りつけて下さい。

> Dim ComputerIp As IPHostEntry
> Dim ComputerIp As IPAddres
同じ名前の変数を複数指定することはできません。
それに、IPAddres ではなく IPAddress ですよね。

> ComputerName= System.Environment.GetEnvironmentVariable("COMPUTERNAME")
> IpHost= Dns.GetHostByName(ComputerName)
ComputerName という変数も IpHost という変数も定義されていませんね。

最初の変数宣言は、
  Dim IpHost As IPHostEntry
  Dim ComputerIp As IPAddress
だったのではありませんか?

> Dns.GetHostByNameは旧形式の警告が発生します
Dns.GetHostEntry で。

> 実際に起動してもここで停止してしまいます。
警告は出ますが、3.5 でも使えないわけではないので、それは別の理由かも。


独学者  2010-06-26 04:53:12  No: 146941

魔界の仮面弁士さま

おかしなコードを書いてしまいました。すいません。
旧形式でも使用可能であれば、私の使い方が間違っているようですね
勉強不足ですいませんでした。


shazbot  2010-06-26 08:05:37  No: 146942

質問の内容はさておき、次にこのスレッドを見た人ががっかりしないように、一応の解答を添えてみますね。

'-------------------
Imports System.Net
Imports System.Net.Sockets
    Public Function GetIPAddresses() As List(Of IPAddress)
        Dim IP As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName)
        Dim IPList As New List(Of IPAddress)

        Return IP.AddressList.ToList

    End Function
'-------------------

ローカルIPアドレスのリストを返します。IPv6も含めて複数あるので、そのなかから取捨選択してください。


shazbot  2010-06-26 08:07:33  No: 146943

あ、失礼、訂正します。

'-------------------
Imports System.Net
Imports System.Net.Sockets

'-------------------

'-------------------
    Public Function GetIPAddresses() As List(Of IPAddress)
        Dim IP As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName)

        Return IP.AddressList.ToList

    End Function
'-------------------

IPListが不要でした。失礼しました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加