Các phương thức của Object

Một phần của tài liệu Giáo trình lập trình mạng (Trang 72 - 74)

Giống như những lớp khác trong Java, java.net.InetAddress kế thừa từ lớp

java.lang.Object. Vì vậy, lớp này cũng kế thừa tất cả các phương thức của lớp này. Lớp InetAddress override ba phương thức sau:

public boolean equals(Object o)

public int hashCode()

public String toString()

Hai object của lớp InetAddress bằng nhau nếu chúng có cùng địa chỉ IP. Ví dụ, một object InetAddress cho tbit.vn sẽ bằng với một object cho tuhoctin.net vì cả hai tên miền này đều được trỏ về địa chỉ một địa chỉ IP. Ví dụ 4-7 sẽ tạo các object tương ứng với hai tên miền này và sẽ cho chúng ta biết chúng cùng một địa chỉ IP nếu không có gì thay đổi.

Ví dụ 4-7. Kiểm tra tbit.vntuhoctin.net có cùng địa chỉ IP không?

import java.net.*;

public class IBiblioAliases {

public static void main(String args[]) { try {

InetAddress ibiblio = InetAddress.getByName("tbit.vn"); InetAddress helios = InetAddress.getByName("tuhoctin.net"); if (ibiblio.equals(helios)) {

} else {

System.out.println("tbit.vn không thuộc cùng máy chủ với tuhoctin.net");

}

} catch (UnknownHostException ex) {

System.out.println("Không tìm thấy host tương ứng."); }

} }

Kết quả chạy đoạn code trên tại thời điểm viết tài liệu này:

% java IBiblioAliases

tbit.vn thuộc cùng máy chủ với tuhoctin.net

Phương thức hashcode() trả về một số nguyên tương ứng với địa chỉ IP. Nếu hai object InetAddress cùng địa chỉ IP, chúng sẽ cùng mã hash code, mặc dù hostname có thể khác nhau.

Phương thức toString() trả về một đoạn văn bản ngắn mô tả object. Ví dụ 4- 1Ví dụ 4-2 đã thực hiện gọi phương thức này. Kết quả trả về của nó dạng:

hostname/địa chỉ IP

Không phải tất cả object InetAddress đều có hostname. Nếu chúng không có hostname, địa chỉ IP sẽ được dùng thay thế trong phiên bản Java 1.3 trở về trước, còn đối với Java 1.4 trở về sau nó sẽ trả về một xâu rỗng.

4.8 Inet4Address và Inet6Address

Java sử dụng hai lớp Inet4AddressInet6Address để phân biệt địa chỉ IPv4 và địa chỉ IPv6.

public final class Inet4Address extends InetAddress

public final class Inet6Address extends InetAddress

Hầu hết mọi khi, chúng ta không thực sự nên quan tâm tới địa chỉ IPv4 hay IPv6. Trong tầng ứng dụng, chúng ta không cần phải biết về điều đó. Nhưng cũng có nhiều khi chúng ta cần chúng để làm mọi việc nhanh hơn. Lớp Inet4Address

override nhiều phương thức của lớp InetAddress không thay đổi tới các phương thức public. Lớp Inet6Address cũng tương tự nhưng nó thêm một phương thức không có trong lớp cha:

public boolean isIPv4CompatibleAddress()

Phương thức này trả về giá trị đúng nếu và chỉ nếu đó là một địa chỉ IPv4 có thể nằm trong một IPv6, có nghĩa là chỉ có 4 byte cuối là khác không. Do đó, địa chỉ IP sẽ có dạng 0:0:0:0:0:0:0:xxxx. Trong trường hợp này chúng ta cũng có thể tách

lấy bốn byte cuối cùng từ phương thức getBytes() để tạo ra một object

Inet4Address. Tuy nhiên chúng ta hiếm khi thực hiện điều này.

Một phần của tài liệu Giáo trình lập trình mạng (Trang 72 - 74)

Tải bản đầy đủ (PDF)

(114 trang)