JAVA获取IP地址

JAVA获取IP地址,第1张

public static void main(String[] args) { try { // 获取计算机名 String name = InetAddressgetLocalHost()getHostName(); // 获取IP地址 String ip = InetAddressgetLocalHost()getHostAddress(); Systemoutprintln("计算机名:"+name); Systemoutprintln("IP地址:"+ip); } catch (UnknownHostException e) { Systemoutprintln("异常:" + e); eprintStackTrace(); } }

是否可以解决您的问题?

其实就是在外网搞一个服务器,然后用java去访问这个服务器,然后服务器就能获取到你的外网ip,只需要对数据进行解析。服务器可以自己架设或者网上也有很多提供这样服务的网站,如各种的查ip的网站都有显示自己外网ip的功能。下边是个例子,可以直接运行

import javaioBufferedReader;

import javaioInputStreamReader;

import javanetURL;

public class ListIP {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Systemoutprintln("本机的外网IP是:"+ListIPgetWebIp(">

新建一个ServerSocket对象然后用accept()方法接受请求连接的Socket对象在调用获得的Socket对象的getInetAddress()方法获取InetAddress对象在调用InetAddress对象的getHostAddress方法来获取IP地址。

本机地址获取为了IPV6的IP,这现象只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),其实作怪的是hosts文件,在windows上应该是C:\Windows\system32\drivers\etc\ hosts这个文件),只需要注释掉文件中的 # ::1 localhost 这一行即可解决问题。

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

protected void doGet(>

private String getIpAddr() {

String ipAddress = null;

//ipAddress = thisgetRequest()getRemoteAddr();

ipAddress = thisgetRequest()getHeader("x-forwarded-for");

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getHeader("Proxy-Client-IP");

}

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getHeader("WL-Proxy-Client-IP");

}

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getRemoteAddr();

if(ipAddressequals("127001")){

//根据网卡取本机配置的IP

InetAddress inet=null;

try {

inet = InetAddressgetLocalHost();

} catch (UnknownHostException e) {

eprintStackTrace();

}

ipAddress= inetgetHostAddress();

}

}

//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割

if(ipAddress!=null && ipAddresslength()>15){ //""length() = 15

if(ipAddressindexOf(",")>0){

ipAddress = ipAddresssubstring(0,ipAddressindexOf(","));

}

}

return ipAddress;

}

我才用的一个项目,requestgetRemoteAddr();

不是很准确

ip :

InetAddress addr = InetAddressgetLocalHost();

ip=addrgetHostAddress()toString;//获得本机IP

address=addrgetHostName()toString;//获得本机名称

登陆信息使用Cookie ,Cookie的使用可以使用jquery的 Cookie包 或者java手写生成

登陆时间:

Date now = new Date();

Calendar cal = CalendargetInstance();

DateFormat d1 = DateFormatgetDateInstance(); //默认语言(汉语)下的默认格 (MEDIUM风格,比如:2008-6-16 20:54:53)

以上就是关于JAVA获取IP地址全部的内容,包括:JAVA获取IP地址、Java编程 怎样获得自己在外网的真实ip、java中用socket通信怎么获取访问者的IP等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9675156.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存