Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回访问web应用程序的计算机的ip的方法_Java_Jsp - Fatal编程技术网

Java 返回访问web应用程序的计算机的ip的方法

Java 返回访问web应用程序的计算机的ip的方法,java,jsp,Java,Jsp,我有一个jsp web应用程序,它托管在本地主机托管的机器上 我可以从局域网上的另一台机器访问此web应用程序。 我在这里做的是创建一个bean类,它有一个方法返回访问web应用程序的机器的IP。 但当我从另一台机器访问时,我得到了托管机器本身的IP。 谁能告诉我为什么会这样?告诉我如何获取访问本地主机上托管的web应用程序的另一台计算机的IP。您可以尝试 getRemoteAddr ServletRequest的方法。有关更多详细信息,请参阅。您无法可靠地做到这一点,但如果您能够控制所有客户端

我有一个jsp web应用程序,它托管在本地主机托管的机器上

我可以从局域网上的另一台机器访问此web应用程序。 我在这里做的是创建一个bean类,它有一个方法返回访问web应用程序的机器的IP。 但当我从另一台机器访问时,我得到了托管机器本身的IP。 谁能告诉我为什么会这样?告诉我如何获取访问本地主机上托管的web应用程序的另一台计算机的IP。

您可以尝试

getRemoteAddr


ServletRequest的方法。有关更多详细信息,请参阅。

您无法可靠地做到这一点,但如果您能够控制所有客户端和服务器之间的网络,并且如果您愿意接受恶意请求可能会向您提供虚假信息,则有类似的方法可以向您提供此类信息。重申一下,它绝不保证是最初发送请求的机器的地址,而且它还保证以任何方式是真实的。给定正确(或错误?)的网络条件,很容易伪造该信息。

这是使用web服务获取IP地址 看一看

package ipInfo;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class ExternalIp {
    private static String URL = "http://api-sth01.exip.org/?call=ip";

    public static void main(String[] args) {
        ExternalIp ipGetter = new ExternalIp();
        ipGetter.getExternalIp();
    }

    public void getExternalIp() 
    {
        BufferedReader reader = null;
        String line = "";
        int tries = 0;
        do {    
            try {
                reader = read(URL);
                /*while(reader.readLine() != null)
                {
                    line = line + reader.readLine();
                }*/
                line = reader.readLine();
            }
            catch (FileNotFoundException fne) {
                System.out.println("File not found for url: " + URL);
                System.out.println("Check your typing");
                System.out.println();
                return;
            }
            catch (IOException ioe) {
                System.out.println("Got IO Exception, tries = " + (tries + 1));
                System.out.println("Message: " + ioe.getMessage());
                tries++;
                try {
                    Thread.currentThread().sleep(300000);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
                continue;
            }   
            catch (Exception exc) {
                exc.printStackTrace();
            }
        } while (reader == null && tries < 5);

        if (line != null && line.length() > 0) {
            System.out.println("Your external ip address is: " + line);
        }
        else {
            System.out.println("Sorry, couldn't get your ip address");
        }
    }

    public BufferedReader read(String url) throws Exception{
        return new BufferedReader(
            new InputStreamReader(
                new URL(url).openStream()));
    }

}
包ipInfo;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.URL;
公共类外部性{
专用静态字符串URL=”http://api-sth01.exip.org/?call=ip";
公共静态void main(字符串[]args){
ExternalIp ipGetter=新的ExternalIp();
ipGetter.getExternalIp();
}
public void getExternalIp()
{
BufferedReader reader=null;
字符串行=”;
int=0;
做{
试一试{
reader=read(URL);
/*while(reader.readLine()!=null)
{
line=line+reader.readLine();
}*/
line=reader.readLine();
}
捕获(FileNotFoundException fne){
System.out.println(“找不到url:+url的文件”);
System.out.println(“检查您的输入”);
System.out.println();
返回;
}
捕获(ioe异常ioe){
System.out.println(“获取IO异常,tries=“+(trys+1));
System.out.println(“消息:+ioe.getMessage());
尝试++;
试一试{
Thread.currentThread().sleep(300000);
}捕捉(中断异常e){
Thread.currentThread().interrupt();
}
继续;
}   
捕获(异常exc){
exc.printStackTrace();
}
}while(reader==null&&trys<5);
if(line!=null&&line.length()>0){
System.out.println(“您的外部ip地址是:“+行”);
}
否则{
System.out.println(“对不起,无法获取您的ip地址”);
}
}
公共BufferedReader读取(字符串url)引发异常{
返回新的BufferedReader(
新的InputStreamReader(
新URL(URL.openStream());
}
}
和“返回访问web应用程序的机器ip的方法”是?检查这个