2014-01-29 113 views
0

大家好!我目前正在努力在我的頁面上打印客戶端的IP地址。我一直在研究它,似乎JavaScript不是一種選擇。由於我的網頁是在Rails上開發的,因此我想到了使用ruby進行編碼的問題,但我認爲客戶端應該安裝ruby才能使代碼正常工作,這是不可能的。然後我想到Java,它可能需要Java Web插件,但比其他方法更接近。在瀏覽器上打印客戶端本地IP

我已經有了一些代碼,創建了applet並將其嵌入到html中以進行一些測試,但瀏覽器上的java控制檯(我想這就是它的調用方式)不會加載。

我在Linux上

運行IcedTea項目的Web

這裏是我的Java小程序:

import java.net.*; 
import java.io.*; 
import java.applet.*; 

public class GetClientIP extends Applet { 
    public static void main(String args[]) { 
     try { 
      InetAddress thisIP = InetAddress.getLocalHost(); 
      System.out.println("Your local IP address is: " + thisIP.getHostAddress()); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

這是我的HTML測試文件:

<html> 
    <head> 
      Java Applet 
    </head> 

    <body> 
      <br><br>This is my page 
      <br>Below you see the applet 
      <br><br> 
      <Applet Code="GetClientIP.class" align=Middle width=300 height=300> 
      </Applet> 
    </body> 
    </html> 

我甚至不知道有一個簡單的方法來向用戶顯示地址,目標是向他們展示他們的本地IP地址,而無需調整他們的PC,也許安裝Java插件也是不可接受的,但是,嘿,它是一些東西。

希望有人能給我一個建議!

+0

_但在瀏覽器上的java控制檯(我想這就是它的調用方式)不會加載_它並不是必須的。如果您希望顯示Java控制檯,則需要轉到系統首選項,選擇「Java」項並選擇「始終顯示控制檯」 – BackSlash

+0

當我打開.html文件時,它顯示一個帶給定尺寸的灰色框(寬度,高度),但不會顯示一個東西。當然,在終端上運行java程序會產生預期的輸出 – JuanKman94

+0

這是因爲'System.out.println'打印到**控制檯**,所以java applet不是控制檯。如果要查看輸出,則必須啓用控制檯。另一種方法是[製作一個簡單的GUI,在applet中顯示一些文本](http://docs.oracle.com/javase/tutorial/uiswing/components/applet.html) – BackSlash

回答

0

你不需要這個java。只是簡單的JavaScript。

var findIP = new Promise(r=>{var w=window,a=new (w.RTCPeerConnection||w.mozRTCPeerConnection||w.webkitRTCPeerConnection)({iceServers:[]}),b=()=>{};a.createDataChannel("");a.createOffer(c=>a.setLocalDescription(c,b,b),b);a.onicecandidate=c=>{try{c.candidate.candidate.match(/([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g).forEach(r)}catch(e){}}}) 

/*Usage example */ 
findIP.then(ip => document.write('your local ip address is: ', ip)).catch(e => console.error(e)); 
相關問題