【原創】Java網路程式設計從入門到精通(8):用getAddress方法獲得IP地址

銀河使者發表於2009-04-27

本文為原創,如需轉載,請註明作者和出處,謝謝!

    getAddress方法和getHostAddress類似,它們的唯一區別是getHostAddress方法返回的是字串形式的IP地址,而getAddress方法返回的是byte陣列形式的IP地址。getAddress方法的定義如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtpublic byte[] getAddress()
    這個方法返回的byte陣列是有符號的。在Javabyte型別的取值範圍是-128127。如果返回的IP地址的某個位元組是大於127的整數,在byte陣列中就是負數。由於Java中沒有無符號byte型別,因此,要想顯示正常的IP地址,必須使用intlong型別。下面程式碼演示瞭如何利用getAddress返回IP地址,以及如何將IP地址轉換成正整數形式。
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtpackage 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/

--&gt-45 100 26 122 
211 100 26 122

 

從上面的執行結果可以看出,第一行輸出了未轉換的IP地址,由於www.csdn.netIP地址的第一個位元組大於127,因此,輸出了一個負數。而第二行由於將IP地址的每一個位元組轉換成了int型別,因此,輸出了正常的IP地址。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-591882/,如需轉載,請註明出處,否則將追究法律責任。

相關文章