2014-01-09 88 views
0

我做了一個網站名稱如何獲得客戶端名登錄網站

sampleWebsite:8080/SampleWebsite.jsf 

,我想誰訪問我的網站的一個客戶端名稱/計算機名。每次訪問我的網站時,我都使用此代碼獲取計算機名稱。

System.out.println(InetAddress.getLocalHost().getHostName()); 

我的電腦名是Lenovo-PC

然後我要訪問並登錄到我的網站。我想要我的計算機名稱/客戶端名稱的輸出是Lenove-PC。但輸出是sampleWebsite這是我的服務器名稱。有人可以幫我獲取客戶端名稱/計算機名稱而不是服務器名稱嗎?

我很感謝您的幫助。

回答

0

以下將爲您提供他們的IP地址 - 我知道你想要他們的電腦名稱,但我不知道這是可能的。代碼是在VB.NET中,但你可以使用在線工具轉換爲Java。

''' <summary> 
    ''' Returns the Clients IP address 
    ''' </summary> 
    ''' <returns> 
    ''' [String] The Clients IP address 
    ''' </returns> 
    ''' <remarks> 
    ''' http://bytes.com/topic/asp-classic/answers/439176-how-get-clients-ip-address-asp-net 
    ''' </remarks> 
    Private ReadOnly Property ClientIPAddress() As String 
     Get 

      'Set default return value 
      ClientIPAddress = "<unable to be determined>" 

      Try 
       Dim strClient_HTTP_X_FORWARDED_FOR As String = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
       Dim strClient_REMOTE_ADDR As String = Request.ServerVariables("REMOTE_ADDR") 

       'Check if the XFF header is present 
       If Not String.IsNullOrEmpty(strClient_HTTP_X_FORWARDED_FOR) Then 

        'Use the first entry in the HTTP_X_FORWARDED_FOR list of IP addresses (comma separated) 
        '- the first entry is the Client IP address, the last entry is the last proxy IP address 
        Dim ipRange As String() = strClient_HTTP_X_FORWARDED_FOR.Split(","c) 
        ClientIPAddress = ipRange(0).Trim 

       Else 

        'Use the REMOTE_ADDR value 
        ClientIPAddress = strClient_REMOTE_ADDR.Trim 

       End If 

      Catch ex As Exception 
       'Return default value on exception 

      End Try 

     End Get 
    End Property 
+0

這將是他們的公共IP地址。除非他所有的客戶端都在同一個局域網中,否則如果沒有在客戶端安裝二進制文件,這是不可能的。 – EkriirkE

0

我不認爲這是可能的。你將能夠做的最好的事情就是記錄IP。

0

是的,你可以!我也在我的springmvc攔截器
的應用程序中做到這一點,很簡單!

您需要從上層傳遞請求實例。

(HttpServletRequest request) 
request.getRemoteAddr(); 
request.getRemoteUser() 

請利用JavaEE,你可以得到從請求實例方法。

+0

感謝您的幫助。我能夠獲得我的電腦的IP地址。但是使用request.getRemoteUser()可以獲取計算機名稱?因爲當我使用該代碼輸出爲空... –

+0

嗨,你知道如何解決如果remoteUser返回null?謝謝...... –

+0

@ steven_110791不,'remoteUser'只有在瀏覽器沒有填充這個字段時才返回null,這是瀏覽器的動作而不是bug。 – Rugal