java中,如何获取真实的IP地址

java中,如何获取真实的IP地址,第1张

/

获取客户端ip

@param request

@return

/

>

看有没有抛异常   没异常就是已经连接上了

想获取服务器名称    可以用ARP协议   或者测试连接的时候服务器回应一个名称

package baiduzhidao;

import javaioIOException;

import javanetInetSocketAddress;

import javanetSocket;

public class Client {

    public static void main(String[] args) {

        /

          端口号

         /

        int port = 10000;

        /

          连接延时

         /

        int timeout = 300;

        Systemoutprintln("Scanner Start");

        Socket socket;

        /

          扫描

         /

        for (int i = 1, k = 254; i < k; i++) {

            if ((socket = isOnLine("1921681" + i, port, timeout)) != null) {

                Systemoutprintln("Server:"

                        + socketgetInetAddress()getHostAddress()

                        + ":" + socketgetPort() + " Is Waiting");

            }

            /

              关闭连接

             /

            if (socket != null && !socketisClosed()) {

                try {

                    socketclose();

                } catch (IOException e) {

                    socket = null;

                }

            }

        }

        Systemoutprintln("Scanner end");

    }

    /

      测试连接服务器,返回连接成功后的Socket

      

      @param ip

                 服务器Ip

      @param port

                 服务器端口号

      @param timeout

                 连接延时

      @return 返回连接成功后的Socket

     /

    private static Socket isOnLine(String ip, int port, int timeout) {

        Socket socket = new Socket();

        try {

            socketconnect(new InetSocketAddress(ip, port), timeout);

        } catch (IOException e) {

            return null;

        }

        return socket;

    }

}

import javaio;

import javanet;

try {

URL url = new URL(">

import javautil;

import javanet;public class getMyIP

{

public static void main(String[] args)

{

String IP = null;

String host = null;

try

{

InetAddress ia = InetAddressgetLocalHost();

host = iagetHostName();//获取计算机名字

IP= iagetHostAddress();//获取IP

}

catch(UnknownHostException e)

{

eprintStackTrace();

}

Systemoutprintln(host);

Systemoutprintln(IP);

}

}

在JSP里,获取客户端的IP地址的方法是:requestgetRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。

如果使用了反向代理软件,用requestgetRemoteAddr()方法获取的IP地址是:127001 或 1921681110,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的>

举个例子,假设服务器端运行的是servlet,客户端(浏览器)发送url到服务器,经过解析,服务器找到并运行相应的servlet程序,在servlet程序中可以接受到用户提交的信息,比如用户提交方式是Get方式,则servlet调用其doGet方法,在doGet方法中,可以通过request获取用户提交的数据(包括ip)

protected void doGet(>

import javanetInetAddress;

import javanetUnknownHostException;

public class TestInetAddress {

InetAddress myIpAddress = null;

InetAddress[] myServer = null;

public static void main(String args[]) {

TestInetAddress address = new TestInetAddress();

Systemoutprintln("Your host IP is: " + addressgetLocalhostIP());

String domain = >

以上就是关于java中,如何获取真实的IP地址全部的内容,包括:java中,如何获取真实的IP地址、java编程,获取局域网内服务器端的ip地址、请问java获取请求对象的电脑ip和网络ip的方法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9543436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存