2014-02-26 1 views
0

IPv4Address를 가져 오려고하지만이 코드는 항상 동일한 다른 IP 주소를 반환합니다. 사용자 IP 주소는 어떻게 얻을 수 있습니까?VB.NET을 사용하여 ASP.NET에서 IPv4Address 가져 오기

Private Function GetIPv4Address() As String 

     GetIPv4Address = String.Empty 
     Dim strHostName As String = System.Net.Dns.GetHostName() 
     Dim iphe As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(strHostName) 

     For Each ipheal As System.Net.IPAddress In iphe.AddressList 
      If ipheal.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then 
       GetIPv4Address = ipheal.ToString() 
      End If 
     Next 

     lblIP.Text = GetIPv4Address 

    End Function 

답변

0

와 바이올린입니다.

<head id="Head1" runat="server"> 

<script type="application/javascript"> 

    var myip; 
    function ip_callback(o) 
    { 
     myip = o.host; 
    } 

    function Theval() 
    { 
     document.getElementById('lblIP').innerText = myip 
    } 

</script> 

<script type="application/javascript" src="https://smart-ip.net/geoip-json?callback=ip_callback"></script> 

<title></title> 

</head> 

<body onload="Theval()"> 

    <form id="form1" runat="server"> 

      <asp:Label ID="lblIP" runat="server" Text="lblIP">aaa</asp:Label> 

    </form> 

</body> 
</html> 
1
Private Function GetExternalIp() As String 
    Try 
     Dim externalIP As String =New WebClient().DownloadString("http://checkip.dyndns.org/") 
     externalIP = (New Regex("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")) _ 
        .Matches(externalIP)(0).ToString() 
     Return externalIP 
    Catch 
     Return Nothing 
    End Try 
End Function 

편집 :

당신은 내가 지금 ASP .NET로 태그 것을 볼 수 있지만,이, 웹 사이트의 일부 언급하지 않았다. 그것은 큰 차이를 만듭니다. 귀하가보고있는 것은 귀하의 웹 사이트가 실행되고있는 서버의 IP 주소입니다. 그러므로 모든 방문자에게 똑같습니다. 개별 방문자의 IP를 원하면 JavaScript을 사용하여 클라이언트 쪽에서해야합니다. VB (및 ASP) .NET은 서버 측에서만 실행됩니다.

은 예쁜 해결책이 될하지 않을 수 있습니다,하지만 작동합니다 :

function getIp() 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);  
    xmlhttp.send(); 
    var hostIpInfo = xmlhttp.responseText.split("\n"); 

    for (i=0; hostIpInfo.length >= i; i++) 
    { 
     ipAddress = hostIpInfo[i].split(":"); 
     if (ipAddress[0] == "IP") 
     { 
      return ipAddress[1]; 
     } 
    } 
} 

Here이 내 솔루션 었죠 위의 코드

+0

이 URL http://checkip.dyndns.org로 직접 이동하면 IP가 코드와 다른 이유는 무엇입니까? – Etienne

+0

코드에서와 같이 어떻게됩니까? 또한, 당신은 프록시 뒤에 있습니까? –

+0

나는 다른 주소를 보여주는 프록시에 대해서는 잘 모른다. IP의 처음 두 숫자 만 같습니다. – Etienne

관련 문제