【原創】Java網路程式設計從入門到精通(8):用getAddress方法獲得IP地址
本文為原創,如需轉載,請註明作者和出處,謝謝!
getAddress方法和getHostAddress類似,它們的唯一區別是getHostAddress方法返回的是字串形式的IP地址,而getAddress方法返回的是byte陣列形式的IP地址。getAddress方法的定義如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->public byte[] getAddress()
這個方法返回的byte陣列是有符號的。在Java中byte型別的取值範圍是-128〜127。如果返回的IP地址的某個位元組是大於127的整數,在byte陣列中就是負數。由於Java中沒有無符號byte型別,因此,要想顯示正常的IP地址,必須使用int或long型別。下面程式碼演示瞭如何利用getAddress返回IP地址,以及如何將IP地址轉換成正整數形式。Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->public byte[] getAddress()
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->package mynet;
import java.net.*;
public class MyIP
{
public static void main(String[] args) throws Exception
{
InetAddress address = InetAddress.getByName("www.csdn.net");
byte ip[] = address.getAddress();
for (byte ipSegment : ip)
System.out.print(ipSegment + " ");
System.out.println("");
for (byte ipSegment : ip)
{
int newIPSegment = (ipSegment < 0) ? 256 + ipSegment : ipSegment;
System.out.print(newIPSegment + " ");
}
}
}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->package mynet;
import java.net.*;
public class MyIP
{
public static void main(String[] args) throws Exception
{
InetAddress address = InetAddress.getByName("www.csdn.net");
byte ip[] = address.getAddress();
for (byte ipSegment : ip)
System.out.print(ipSegment + " ");
System.out.println("");
for (byte ipSegment : ip)
{
int newIPSegment = (ipSegment < 0) ? 256 + ipSegment : ipSegment;
System.out.print(newIPSegment + " ");
}
}
}
執行結果:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->-45 100 26 122
211 100 26 122
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->-45 100 26 122
211 100 26 122
從上面的執行結果可以看出,第一行輸出了未轉換的IP地址,由於www.csdn.net的IP地址的第一個位元組大於127,因此,輸出了一個負數。而第二行由於將IP地址的每一個位元組轉換成了int型別,因此,輸出了正常的IP地址。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-591882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【原創】Java網路程式設計從入門到精通(5):使用getHostName方法獲得域名Java程式設計
- 【原創】Java網路程式設計從入門到精通(6):使用getCanonicalHostName方法獲得主機名Java程式設計
- 【原創】Java網路程式設計從入門到精通 (9):使用isXxx方法判斷地址型別Java程式設計型別
- Java學習從入門到精通[原創]Java
- 【原創】Java網路程式設計從入門到精通(2):建立InetAddress物件的四個靜態方法Java程式設計物件
- Android Camera 程式設計從入門到精通Android程式設計
- 網路篇 - http協議從入門到精通HTTP協議
- Docker 從入門到精通(三)一 網路配置Docker
- Java學習從入門到精通Java
- 從入門到精通,Java學習路線導航Java
- 用Python和Pygame寫遊戲-從入門到精通(8)PythonGAM遊戲
- 用Pygame和Python做遊戲-從入門到精通(8)GAMPython遊戲
- 好程式設計師分享Python從入門到精通最佳學習路線程式設計師Python
- Java 從入門到精通-反射機制Java反射
- 超詳細的程式設計師Java學習路線指南 ,從入門到精通 不看後悔程式設計師Java
- 【原創】Java網路程式設計從入門到精通(10):Inet4Address類和Inet6Address類Java程式設計
- 移動網際網路之路——Axure RP 8.0網站與APP原型設計從入門到精通網站APP原型
- Thymeleaf從入門到精通
- LESS從入門到精通
- Git 從入門到精通Git
- Shell從入門到精通
- Promise從入門到精通Promise
- vim從入門到精通
- Charles 從入門到精通
- RabbitMQ從入門到精通MQ
- SAP從入門到精通
- redis從入門到精通Redis
- .NET8 Blazor 從入門到精通:(二)元件Blazor元件
- 自學 Java 怎麼入門,怎麼從入門到精通?Java
- Java學習從入門到精通(3)(轉)Java
- Java學習從入門到精通(2)(轉)Java
- 真正的Java學習從入門到精通Java
- Java從入門到精通的學習路線你知道嗎?Java
- 10本程式設計書籍推薦,帶你從入門到精通!程式設計
- C++開源TCP/IP網路開發框架:ACE從入門到精通V9.5C++TCP框架
- 用Pygame寫遊戲-從入門到精通15GAM遊戲
- 用Pygame寫遊戲-從入門到精通14GAM遊戲
- Java/JSP獲得客戶端網路卡MAC地址的三種方法解析(附:獲得真實IP)JavaJS客戶端Mac