本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!
上一篇:Java網(wǎng)絡(luò)編程從入門(mén)到精通(7):用getHostAddress方法獲得IP地址
getAddress方法和getHostAddress類(lèi)似,它們的唯一區(qū)別是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte數(shù)組形式的IP地址。getAddress方法的定義如下:
public byte[] getAddress()
這個(gè)方法返回的byte
數(shù)組是有符號(hào)的。在Java
中byte
類(lèi)型的取值范圍是-128
?127
。如果返回的IP
地址的某個(gè)字節(jié)是大于127
的整數(shù),在byte
數(shù)組中就是負(fù)數(shù)。由于Java
中沒(méi)有無(wú)符號(hào)byte
類(lèi)型,因此,要想顯示正常的IP
地址,必須使用int
或long
類(lèi)型。下面代碼演示了如何利用getAddress
返回IP
地址,以及如何將IP
地址轉(zhuǎn)換成正整數(shù)形式。
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 + " ");
}
}
}
運(yùn)行結(jié)果:
-45 100 26 122
211 100 26 122
從上面的運(yùn)行結(jié)果可以看出,第一行輸出了未轉(zhuǎn)換的IP地址,由于www.csdn.net的IP地址的第一個(gè)字節(jié)大于127,因此,輸出了一個(gè)負(fù)數(shù)。而第二行由于將IP地址的每一個(gè)字節(jié)轉(zhuǎn)換成了int類(lèi)型,因此,輸出了正常的IP地址。
下一篇:Java網(wǎng)絡(luò)編程從入門(mén)到精通(9):使用isXxx方法判斷地址類(lèi)型
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining