|
XPまでなら、IPアドレスはIPv4つまり、192.168.0.0などで表現されるIPアドレスが取得されるが、
Vista以降ではネットワークアダプタにIPv6のインターネットプロトコルが標準で有効になっているのでAddressList(0)ではIPv4ではなくIPv6のアドレスが取得される。
そこでIPv4を確実に取得するためにはこんな感じかな。
Imports System.Net
Dim ipa As IPAddress
Dim iphEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
For Each ipAddr As IPAddress In iphEntry.AddressList
If ipAddr.AddressFamily = Sockets.AddressFamily.InterNetwork Then
ipa = ipAddr
Exit For
End If
Next
’IPアドレス取得
Me.lblErr.Text = ipa.ToString
C#だとこうなるのかな?
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Net;
IPAddress ipa = default(IPAddress);
IPHostEntry iphEntry = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ipAddr in iphEntry.AddressList) {
if (ipAddr.AddressFamily == Sockets.AddressFamily.InterNetwork) {
ipa = ipAddr;
break; // TODO: might not be correct. Was : Exit For
}
}
//IPアドレス取得
this.lblErr.Text == ipa.ToString
まぁみなさん仰られてる通り、ユーザーの概念追加したほうが今後のためにもいいかもしれないですね。
的外れだったらすんません^^,
|