① java获取外网IP
请参考以下代码,可以获得任意给定网卡的ip地址:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class InternetTest {
public static void main(String[] args) {
String netCard = "lo";
try {
Enumeration<NetworkInterface> netInterfaces = NetworkInterface
.getNetworkInterfaces();
if (netInterfaces.hasMoreElements()) {
NetworkInterface netInterface = netInterfaces.nextElement();
if (netCard.equals(netInterface.getName())) {
// 子接口,linux下会取到父接口??
Enumeration<NetworkInterface> subnetInterfaces = netInterface
.getSubInterfaces();
while (subnetInterfaces.hasMoreElements()) {
NetworkInterface subnetInterface = subnetInterfaces
.nextElement();
System.out.println(subnetInterface.getName());
Enumeration<InetAddress> subaddresses = netInterface
.getInetAddresses();
while (subaddresses.hasMoreElements()) {
InetAddress subaddress = subaddresses.nextElement();
System.out.println(subaddress.getHostAddress());
}
}
// 打印接口下所有IP
System.out.println(netInterface.getName());
Enumeration<InetAddress> addresses = netInterface
.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
System.out.println(address.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
② java部署的阿里云服务器,然后可以获取外网ip和内网ip吗
在Java的编程世界里,我们探索如何在部署于阿里云服务器的应用中获取客户端的内外网IP地址,这涉及到服务器端的代码实现以及网络通信的基本原理。首先,我们引入一个关键类——IpUtil,它扮演着超级侦探的角色,具备在复杂HTTP请求中找到IP地址的能力,就像在迷宫中寻找到路标一样精准。
在我们的故事中,Controller类负责接收到请求并传递给IpUtil类进行处理。就好比电话接线员,他迅速将呼叫转接给负责处理请求的关键部门。这使得客户端IP的检索过程变得更加高效和简洁。
接下来,让我们揭开代码背后的神秘面纱,发现编程的魔法所在。通过解析HTTP头部,如Proxy-Client-IP或WL-Proxy-Client-IP等字段,IpUtil类能够巧妙地提取出客户端的真实IP地址。这些字段就像是隐藏的线索,只有经验丰富、技巧高超的侦探才能发现它们的存在。
通过这个故事,我们不仅掌握了在阿里云服务器上获取客户端内外网IP地址的代码实现,更重要的是体验到了编程的乐趣和无限可能。每一次在键盘上敲下的代码,都是一次施展魔法的瞬间,每一行代码都蕴含着解决问题的策略和智慧。在编程的魔法世界里,我们学会了利用工具和技巧,面对挑战,勇敢地探索未知,体验到了编程带来的乐趣与成就感。
总结而言,通过巧妙地运用Java语言和相关类库,我们能够轻松地在阿里云服务器上获取客户端的内外网IP地址。这个过程不仅展示了编程的魔法,更激发了我们对于技术探索的渴望。让我们一起继续在编程的道路上前行,用代码编织出更多精彩的篇章,将每一次挑战转化为成长的机会,让编程的魔法在我们手中绽放出更加璀璨的光芒。
③ java中如何获取使用者的IP地址及禁止此人
如果你是javaWeb,可以在过滤器中使用request.getRemoteAddr() ,发现此IP直接跳转到无用的页面或者不存在的页面
如果你是socket,也可以通过socket.getIAddress()获取IP,发现此IO直接把他的连线关闭就可以了
static$realip;
if(isset($_SERVER)){
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip=$_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
$realip=$_SERVER["HTTP_CLIENT_IP"];
}else{
$realip=$_SERVER["REMOTE_ADDR"];
}
}else{
if(getenv("HTTP_X_FORWARDED_FOR")){
$realip=getenv("HTTP_X_FORWARDED_FOR");
}elseif(getenv("HTTP_CLIENT_IP")){
$realip=getenv("HTTP_CLIENT_IP");
}else{
$realip=getenv("REMOTE_ADDR");
}
}
return$realip;
}
输入本地IP地址,进入到安装页面,点选"...
1
检视环境没有问题后,继续下一步!
2
选择安装方式后,继续下一步!
3
填写资料库和网站后台账号密码。如果是...
4
安装成功后,我们在浏览器输入:"127.0.0...
5
点选更新站点快取
6
选择全部后,点选提交
7
现在你就可以开始你的电商之旅了!
请问你要用的是什么程式码来获取呀??
public static string GetIP()
{
string ip;
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
return ip;
}
使用者名称就是您的手机型号。ip地址可以通过浏览器进入网络搜索【ip】,即可以显示您的手机的ip地址。
望采纳,谢谢!
这个应该和语言没有关系吧,你释出个JavaWeb专案,你是怎么获取客户的Ip地址的?难道浏览器都是java编写的吗?
这个应该是取决与你的情况吧,直接获取Ip地址就好了
1、如果服务器如果没有采用反向代理,而且客户端没有用正向代理的话,那么可以获取客户端的真实IP地址request.getRemoteAddr()
2、如果服务器如果没有采用反向代理,而且客户端有用正向代理的话,那么通过request.getRemoteAddr()获取客户端的IP地址是客户端 的代理服务器的地址,并不是客户端的真实地址,
3、如果客户端使用的是多层代理的话,服务器获得的客户端地址是客户端的最外围代理服务器的地址如果服务器如果采用反向代理服务器,不管客户端采用的是何种方式访问服务器。
获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
严重同意LS滴要彻底禁止修改IP只能锁定登录档,不过负面影响就是可能有时候自己忘了恢复登录档许可权就安装软体可能会出现安装失败
组策略里可以设定不能修改网路配置的选项的,只要不是很懂电脑的人一般都不会知道在哪里去修改这个选项的,你可以试一试看的
然后输入“ipconfig”,显示出来的“IP Address”就是你的本机IP地址。 如果是98刚点“开始”→执行→输入“winipcfg”就可以看到本地IP了。 第二步把这个获取的ip有意识地变为自己的固定ip,比如说你刚才ip为61.1.2.245,网路自动配制ip的模式为从255到0,第一个上网人为61.1.2.255,第二个为61.1.2.254,第三个就是61.1.2.153,经此类推,越小号(最后一位)用的机会也越少,这也是你配制固定IP的好机会,比如你选用了29,那你的ip就是61.1.2.29。以上61.1.2.*是个例子,不是你要配制的,你要看清楚。 第三步是获取闸道器,还拿上面例子说明,你的闸道器为61.1.2.1,即把最后一位变成1就可以了。 第四步你要登陆你所在电信部门你网站来获取dns,找到后你记下网址,关掉你的猫,再次登陆你刚才记下的网站,这时机器会在下面的登陆资讯框中显示你要登陆网站的ip地址,比如为61.1.2.3,前两位对我们的用途太大了,这样你获取的dns就是61.1.1.4和61.1.2.5,这是固定格式,你要记清楚,1.42.5是不变的。如果你无法找到当面地电信部门的网站,那么你就找当地的 *** 网,不会吧,又找不见,忘了说了,是在找地市级的行政网,这下找到了,关掉猫,记下来大功告成。 第五步在本机上设定,你可以在网路临居上上击右链,然后找到你要配制的那个网络卡,有许多机子是双网络卡,在相应栏中填上你刚才获取的资讯,在启用DNS时要填主机名,你可填上我的网名linzhongzi,也可以填上你的网名,想填什么就填什么,域这一项就不要填了。
④ java中如何获取到本机的外网ip地址
java获取本机的外网ip示例:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 获取本机外网IP地址
* 思想是访问网站http://checkip.dyndns.org/,得到返回的文本后解析出本机在外网的IP地址
* @author pieryon
*
*/
public class ExternalIpAddressFetcher {
// 外网IP提供者的网址
private String externalIpProviderUrl;
// 本机外网IP地址
private String myExternalIpAddress;
public ExternalIpAddressFetcher(String externalIpProviderUrl) {
this.externalIpProviderUrl = externalIpProviderUrl;
String returnedhtml = fetchExternalIpProviderHTML(externalIpProviderUrl);
parse(returnedhtml);
}
/**
* 从外网提供者处获得包含本机外网地址的字符串
* 从http://checkip.dyndns.org返回的字符串如下
* <html><head><title>Current IP Check</title></head><body>Current IP Address: 123.147.226.222</body></html>
* @param externalIpProviderUrl
* @return
*/
private String fetchExternalIpProviderHTML(String externalIpProviderUrl) {
// 输入流
InputStream in = null;
// 到外网提供者的Http连接
HttpURLConnection httpConn = null;
try {
// 打开连接
URL url = new URL(externalIpProviderUrl);
httpConn = (HttpURLConnection) url.openConnection();
// 连接设置
HttpURLConnection.setFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
// 获取连接的输入流
in = httpConn.getInputStream();
byte[] bytes=new byte[1024];// 此大小可根据实际情况调整
// 读取到数组中
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=in.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// 将字节转化为为UTF-8的字符串
String receivedString=new String(bytes,"UTF-8");
// 返回
return receivedString;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
httpConn.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 出现异常则返回空
return null;
}
/**
* 使用正则表达式解析返回的HTML文本,得到本机外网地址
* @param html
*/
private void parse(String html){
Pattern pattern=Pattern.compile("(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})", Pattern.CASE_INSENSITIVE);
Matcher matcher=pattern.matcher(html);
while(matcher.find()){
myExternalIpAddress=matcher.group(0);
}
}
/**
* 得到本机外网地址,得不到则为空
* @return
*/
public String getMyExternalIpAddress() {
return myExternalIpAddress;
}
public static void main(String[] args){
ExternalIpAddressFetcher fetcher=new ExternalIpAddressFetcher("http://checkip.dyndns.org/");
System.out.println(fetcher.getMyExternalIpAddress());
}
}
⑤ java如何获取公网ip,有通过路由
如果要通过路由器,不同的路由器的获取方法不一样。通用的做法是通过 HttpClient 在网络上搜索关键字 ip, 然后提取出公网ip。
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassApp{
//获取网页源码
staticStringhttpGet(Stringurl){
StringBufferbuffer=newStringBuffer();
try{
URLConnectionconn=newURL(url).openConnection();
conn.addRequestProperty("User-Agent","Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36");
try(InputStreaminputStream=conn.getInputStream();
InputStreamReaderstreamReader=newInputStreamReader(inputStream);
BufferedReaderreader=newBufferedReader(streamReader);){
Stringline=null;
while((line=reader.readLine())!=null){
buffer.append(line).append(System.lineSeparator());
}
}
}catch(IOExceptione){
e.printStackTrace();
}
returnbuffer.toString();
}
publicstaticvoidmain(String[]args){
Stringhtml=httpGet("https://www..com/s?wd=ip");
//提出IP
Patternpattern=Pattern.compile("<span\sclass="c-gap-right">本机IP: ([^<]+)</span>");
Matchermatcher=pattern.matcher(html);
if(matcher.find()){
Stringip=matcher.group(1);
System.out.println(ip);
}
}
}
⑥ 手把手教你用Java获取IP归属地
本文旨在手把手教你使用Java实现获取IP归属地的功能,以解决各大平台如微信公众号、知乎和抖音等所推出的相关功能。实现这一目标的步骤涉及获取IP地址、解决Nginx反向代理问题以及通过IP获取归属地等关键环节。
首先,我们需要基于Spring Boot搭建项目,添加控制器(Controller)中使用HttpServletRequest获取IP地址。然而,在本地环境下,获取的IP可能是0:0:0:0:0:0:0:1或局域网IP,这些都不具备公网访问的能力,因此需要将项目部署至外网服务器,以确保能成功获取到公网IP。
面对Nginx反向代理的挑战,我们需要在Nginx的配置文件中添加特定的配置,确保客户端请求的IP能够被正确传入Nginx服务。通过这一措施,最终获取到的是客户端的真实IP,而非Nginx服务器的IP。
获取到IP后,接下来的步骤是获取归属地。有多种方法可以实现这一目标,本文将介绍两种主要途径:一是通过IP归属地API获取,需发起HTTP请求,使用Spring Boot的RestTemplate来完成;二是通过本地地址库获取,推荐使用Ip2region库,该库以微秒级的速度进行查询,无需担心API服务中断的问题。
为了实现本地地址库的使用,我们首先需要从GitHub官网下载ip2region.xdb地址库,并将其放置在项目资源目录下。接下来,引入相应的Maven依赖,编写代码以完成IP归属地的查询。最终,通过获取region信息,即可获取到IP的归属地,如“中国|0|广东省|广州市|电信”等。
为验证上述程序的有效性,我们以小程序的形式展示IP归属地获取功能,并附上页面效果截图。只需通过扫描二维码,即可查询到自身的归属地信息,直观且便捷。