那麼,標題說什麼:如何使用Java在GWAN服務器中獲取客戶端IP地址?
我如何可以在GWAN服務器中使用Java獲取客戶端IP地址?
我看到在C中有一種方法,但在Java中我還找不到任何東西。 Java中沒有實現與GWAN交互的所有方法嗎?
那麼,標題說什麼:如何使用Java在GWAN服務器中獲取客戶端IP地址?
我如何可以在GWAN服務器中使用Java獲取客戶端IP地址?
我看到在C中有一種方法,但在Java中我還找不到任何東西。 Java中沒有實現與GWAN交互的所有方法嗎?
簡短的回答是肯定的。
的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服務器。
您好@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
您好@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
// ============================================================================
你不能。 Web服務器可以可靠檢索的** ONLY ** IP地址是客戶端連接從其打開的IP。如果用戶位於NAT網關或代理或VPN的後面,那將是網關/代理/ VPN的IP,而不是**客戶端的實際IP。如果不直接在客戶端上運行代碼,則無法獲取客戶端計算機的實際IP地址。 –
Thanks @MarcB,你說得對,那是我需要的IP,公共客戶端IP地址,可能與一個GWAN Servlet? – Jonathan