
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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)