Linux环境下java后台获取外网IP

  1. 项目测试时有测试ip,之后给分配公网ip.那么怎么获取公网ip呢
  2. 通过一个网络代理去获取对应的信息,返回的是一个Json,需要建立一个类接收,之后在取出来
  3. 代码

接收的类

import java.io.Serializable;

public class IpMessage implements Serializable{
    private String ip;
    private String address;

    public IpMessage() {
    }

    public IpMessage(String ip, String address) {
        this.ip = ip;
        this.address = address;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

对应的接口

public interface GetIPAddressService {
    String getNetIp();
}

对应的实现类

@Service
@Transactional(rollbackFor = Exception.class)
public class GetIPAddressServiceImpl implements GetIPAddressService {
    public static String getRemoteIp() {
        InputStream in = null;
        StringBuffer buffer = new StringBuffer();
        try {
            URL url = new URL("http://ip.chinaz.com/getip.aspx"); //创建 URL
            in = url.openStream(); // 打开到这个URL的流
            BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
            String inputLine = "";
            while ((inputLine = reader.readLine()) != null)
            {
                buffer.append(inputLine);
            }
        }catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return buffer.toString();
    }


    @Override
    public String getNetIp() {
        JsonTool JsonTool = new JsonTool();
        IpMessage ipMessage = JsonTool.toBean(IpMessage.class,getRemoteIp());
        return  ipMessage.getIp();
    }
}

调用getNetIp()方法就可以得到对应的ip。

猜你喜欢

转载自blog.csdn.net/dingming001/article/details/79746341