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

わんくま同盟

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

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


(過去ログ 109 を表示中)
■64702 / )  Re[10]: webサーバでクライアントを特定するには
□投稿者/ Ante (11回)-(2012/12/20(Thu) 15:15:59)
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

まぁみなさん仰られてる通り、ユーザーの概念追加したほうが今後のためにもいいかもしれないですね。

的外れだったらすんません^^,

返信 編集キー/


管理者用

- Child Tree -