① 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歸屬地獲取功能,並附上頁面效果截圖。只需通過掃描二維碼,即可查詢到自身的歸屬地信息,直觀且便捷。