如何使用Java在GWAN服务器中获取客户端IP地址?
标题说明了一切: 如何使用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
我在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收件箱。