如何使用Java在GWAN服务器中获取客户端IP地址?

如何使用Java在GWAN服务器中获取客户端IP地址?,java,ip-address,g-wan,Java,Ip Address,G Wan,标题说明了一切: 如何使用Java在GWAN服务器中获取客户端IP地址 我在C中看到了一种方法,但在Java中我还没有找到任何方法。不是所有用Java实现的方法都可以与GWAN交互吗?简单的回答是肯定的 实现G-WAN java API的Gwan.java类以以下注释开头: // ============================================================================ // Java API calls for the G-WAN

标题说明了一切:

如何使用Java在GWAN服务器中获取客户端IP地址


我在C中看到了一种方法,但在Java中我还没有找到任何方法。不是所有用Java实现的方法都可以与GWAN交互吗?

简单的回答是肯定的

实现G-WAN java API的
Gwan.java
类以以下注释开头:

// ============================================================================
// 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!
// ----------------------------------------------------------------------------

因此,是的,您可以使用值为
REMOTE\u ADDR
Gwan.getIntEnv()
访问G-WAN服务器看到的客户端IP地址。

Hello@Gil作为您的回复

也许那个代码是另一个版本?这是我在网页上提供的最新Gwan版本中看到的:

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服务器能够可靠检索的唯一IP地址是从中打开客户端连接的IP地址。如果用户位于nat网关或代理或vpn后面,则该ip将是网关/代理/vpn的ip,而不是客户端的实际ip。如果不直接在客户端上运行代码,您就无法获得客户端计算机的实际IP。谢谢@MarcB,您是对的,这就是我需要的IP,公共客户端IP地址,可以使用GWAN Servlet吗?您好@Gil,请回答,也许代码是其他版本的?这就是我在网页上看到的最新Gwan版本:Gwan.java:`/=============================================================================================================================================================================================================================================================================================================================================================================================================================================。服务器()/--------------------------------------------------------------包api;public类Gwan{public static native long getReply(long env);…`您是否尝试了我建议的命令?它可能是在以后添加的(因此您的servlet将崩溃),或者可能没有文档记录(在这种情况下,servlet将按预期运行)。无论如何,如果您在www.gwan.com上给我们留言,我们将帮助您进一步访问您需要的功能。Hello@Gil谢谢!是的,我尝试过,但gwan类不包含该方法,我将通过www.gwan.com与您联系Hello@Gil我通过www.gwan.com表单联系人发送了电子邮件,希望您能看到我确实发送了我的请求uest/通过本页底部的表格提问@Gil,你认为这样可以吗?还是我必须改用其他方式?干杯并提前感谢!你使用gmail地址的电子邮件已于5月5日回复。检查你的“垃圾邮件”gmail收件箱。