Chương I - InetAddress

Màu nền
Font chữ
Font size
Chiều cao dòng

I, Khái Niệm :

- Lớp InetAddress được sử dụng để biểu diễn các địa chỉ IP trong một ứng dụng mạng. Lớp này được sử dụng bởi hầu hết các lớp mạng, bao gồm Socket, ServerSocket, DatagramSocket, DatagramPacket,…

- Nó bao gồm hai trường thông tin :

 +  hostName (một đối tượng kiểu String)

 +  address (một số kiểu int).

Các trường này không phải là trường public, vì thế ta không thể truy xuất chúng trực tiếp.

- Mô tả mô hình khai báo đối tượng InetAddress :

public class InetAddress

{

private String hostName;

private int address;

          public String getHostName()

          {

                   return hostName;

          }

          ...

};

- Ví dụ : Viết trang ThongTinMay để đọc các thông số về HostName, IP Address và Domain Name của máy tính cục bộ đang làm việc :

import java.net.*;

class ThongTinMay

{

          public static void main(String[] args)

          {

                   try

                   {

                             InetAddress addr=InetAddress.getLocalHost();

                             String hostname=addr.getHostName();

                             String hostaddress=addr.getHostAddress();

                             String host=addr.getCanonicalHostName();

                             System.out.println("Host Name : " + hostname);

                             System.out.println("IP Address : " + hostaddress);

                             System.out.println("Domain : " + host);

                   }

                   catch (UnknownHostException evt)

                   {

                             evt.printStackTrace();

                   }

          }

}

Kết quả thu được như sau :

II, Phương Thức và Thuộc Tính

- Lớp InetAddress không có các hàm khởi tạo (constructor) . Tuy nhiên, có ba phương thức tĩnh trả về các đối tượng thuộc kiểu InetAddress :

1, public static InetAddress InetAddress.getByName(String hostname)

Phương thức này được sử dụng để kết nối đến 1 máy chủ xác định, tham số truyền vào là 1 chuỗi ký tự. Chuỗi này có thể là : tên máy, địa chỉ IP hoặc là địa chỉ 1 trang web…

2.

public static InetAddress[ ] InetAddress.getAllByName(String hostname)

kết quả trả về là 1 mảng đối tượng thuộc kiểu InetAddress

3. public static InetAddress  InetAddress.getLocalHost()

phương thức này được sử dụng để đọc thông tin của máy cục bộ đang làm việc.

Ví dụ : Viết chương trình kết nối đến trang web “www.microsoft.com” , in ra màn hình hostname và ip address của trang web đó :

import java.net.*;

class LayDC

{

      public static void main(String[] args)

      {

          try

          {

                InetAddress dc =InetAddress.getByName("www.microsoft.com");

                System.out.println("Dia Chi IP Trang Microsoft : " + dc);

          }

          catch (UnknownHostException evt)

          {

                evt.printStackTrace();

          }

      }

}

Kết quả thu được như sau :

- Một số phương thức khác :

public String getHostName() :

Phương thức này trả về một chuỗi biểu diễn hostname của một đối tượng InetAddress. Nếu máy không có hostname, thì nó sẽ trả về địa chỉ IP của máy này dưới dạng một xâu ký tự.

public byte[ ] getAddress() :

Nếu bạn muốn biết địa chỉ IP của một máy, phương thức getAddress() trả về một địa chỉ IP dưới dạng một mảng các byte.

Ví dụ : Viết chương trình đọc ra địa chỉ IP của máy tính, sau đó cho biết địa chỉ đó nằm ở lớp địa chỉ nào :

import java.net.*;

class PhanLoaiIP

{

          public static void main(String[] args) throws UnknownHostException

          {

                   InetAddress host=InetAddress.getLocalHost();

                   byte[] b=host.getAddress();

                   if (b[0]>=0)

                             i = b[0];

                   else                      

                             i = 256 + b[0];

                   if ( (i>=1) && (i<=126) )

                             System.out.println(host + " thuoc dia chi lop A");

                   if ( (i>=128) && (i<=191) )

                             System.out.println(host + " thuoc dia chi lop B");

                   if ( (i>=192) && (i<=223) )

                             System.out.println(host + " thuoc dia chi lop C");

          }

}

Bạn đang đọc truyện trên: Truyen2U.Pro