2014-05-02 121 views
1

那麼,標題說什麼:如何使用Java在GWAN服務器中獲取客戶端IP地址?

我如何可以在GWAN服務器中使用Java獲取客戶端IP地址?

我看到在C中有一種方法,但在Java中我還找不到任何東西。 Java中沒有實現與GWAN交互的所有方法嗎?

+1

你不能。 Web服務器可以可靠檢索的** ONLY ** IP地址是客戶端連接從其打開的IP。如果用戶位於NAT網關或代理或VPN的後面,那將是網關/代理/ VPN的IP,而不是**客戶端的實際IP。如果不直接在客戶端上運行代碼,則無法獲取客戶端計算機的實際IP地址。 –

+0

Thanks @MarcB,你說得對,那是我需要的IP,公共客戶端IP地址,可能與一個GWAN Servlet? – Jonathan

回答

0

簡短的回答是肯定的。

Gwan.java類,它實現了G-WAN的Java API始於以下意見:

// ============================================================================ 
// Java API calls for the G-WAN Web App. Server (http://trustleap.ch/) 
// ---------------------------------------------------------------------------- 
// Compile with: javac Gwan.java 
// 
// The G-WAN API getStrEnv() Java function returns a Java string for: 
// 
// REQUEST    + 
// QUERY_STRING  | 
// FRAGMENT_ID   | 
// REQ_ENTITY   | 
// VHOST_ROOT   | 
// WWW_ROOT   | 
// CSP_ROOT   | 
// LOG_ROOT   | a copy of the G-WAN C string 
// HLD_ROOT   | 
// FNT_ROOT   | 
// REMOTE_ADDR   | 
// USER_AGENT   | 
// SERVER_SOFTWARE  | 
// SERVER_NAME   | 
// SERVER_ADDR   | 
// SERVER_DATE   + 
// 
// Use getIntEnv() for the many integer values (like REQUEST_LEN) 
// 
// ...but these get_env() values are ignored by Java getxxxEnv() calls: 
// 
// HTTP_CODE   + 
// SCRIPT_TMO   | 
// KALIVE_TMO   | 
// REQUEST_TMO   | 
// DOWNLOAD_SPEED  | pointers on integers 
// MIN_READ_SPEED  | 
// MAX_ENTITY_SIZE  | 
// US_HANDLER_STATES + 
// 
// US_HANDLER_DATA  + 
// US_VHOST_DATA  | pointers on user-defined data structures 
// US_SERVER_DATA  + 
// 
// READ_XBUF   + pointers on G-WAN internal structures 
// HTTP_HEADERS  + 
// 
// If you want to contribute in this matter (by helping to implement Java 
// G-WAN API in C with JNI), then drop us a line, you are most welcome! 
// ---------------------------------------------------------------------------- 

所以,是的,你可以使用Gwan.getIntEnv()與價值REMOTE_ADDR訪問由G看到客戶端IP地址-WAN服務器。

+0

您好@Gil您的回覆,也許該代碼是在其他版本? 這是我在網頁上看到的持續的Gwan版本: ** Gwan.java:** ' // ================= ================================================== ========= // Java API調用G-WAN Web App。服務器(http://trustleap.ch/) // ------------------------------------ ---------------------------------------- package api; public class Gwan public static native getReply(long env); ... ' – Jonathan

0

您好@Gil對您的回覆,

也許該代碼是在其他版本?這是我在網頁中提供的持續金桂冠版本中看到:

Gwan.java:

// ============================================================================ 
// Java API calls for the G-WAN Web App. Server (trustleap.ch) 
// ---------------------------------------------------------------------------- 
package api; 
public class Gwan { 
public static native long getReply(long env); 
    public static native void xbufCat (long ctx, String str); 
    public static native long cycles64(); 
    public static native long getNs (); 
    public static native long getUs (); 
    public static native long getMs (); 
    public static native void logErr (long env, String msg); 
    public static native void report (long reply, int html_format); 
} 
// ============================================================================ 
// End of Source Code 
// ============================================================================ 
+0

你嘗試過我建議的命令嗎?它可能在稍後添加(所以你的servlet會崩潰),或者它可能沒有被記錄(在這種情況下,servlet將按預期運行)。無論如何,如果您在www.gwan.com上給我們留言,我們會進一步幫助您訪問您需要的功能。 – Gil

+0

你好@Gil謝謝!,是的,我確實嘗試過,但是Gwan類別不包含該方法,我會通過www.gwan.com聯繫我們 – Jonathan

+0

你好@Gil我通過www.gwan.com表格聯繫人發送了電子郵件,我希望你能看到它 – Jonathan

相關問題