JAVA怎么获取IP地址

JAVA怎么获取IP地址,第1张

这个是获取不到的,因为有代理、端口映射等等转发情况的存在。为什么不保存相对路径/域名/或者在服务器上某个配置文件中配置域名/数据库中一个表/数据库中某个字段保存当前服务器的ip地址呢?

<%

String ip = request.getHeader("x-forwarded-for")

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP")

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP")

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr()

}

out.print(ip)

%>

socket.connect(new InetSocketAddress(ip, port), timeout)

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

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

package baiduzhidao

import java.io.IOException

import java.net.InetSocketAddress

import java.net.Socket

public class Client {

    public static void main(String[] args) {

        /**

         * 端口号

         */

        int port = 10000

        /**

         * 连接延时

         */

        int timeout = 300

        System.out.println("Scanner Start...")

        Socket socket

        /**

         * 扫描

         */

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

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

                System.out.println("Server:"

                        + socket.getInetAddress().getHostAddress()

                        + ":" + socket.getPort() + " Is Waiting...")

            }

            /**

             * 关闭连接

             */

            if (socket != null && !socket.isClosed()) {

                try {

                    socket.close()

                } catch (IOException e) {

                    socket = null

                }

            }

        }

        System.out.println("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 {

            socket.connect(new InetSocketAddress(ip, port), timeout)

        } catch (IOException e) {

            return null

        }

        return socket

    }

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/378236.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存