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では別の方法があるのでしょうか
問題点を正しく伝えられるよう、再現性のあるコードを貼りつけて下さい。
> 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 でも使えないわけではないので、それは別の理由かも。
魔界の仮面弁士さま
おかしなコードを書いてしまいました。すいません。
旧形式でも使用可能であれば、私の使い方が間違っているようですね
勉強不足ですいませんでした。
質問の内容はさておき、次にこのスレッドを見た人ががっかりしないように、一応の解答を添えてみますね。
'-------------------
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も含めて複数あるので、そのなかから取捨選択してください。
あ、失礼、訂正します。
'-------------------
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が不要でした。失礼しました。