INETADDRESS

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 58

Quản lý địa chỉ kết nối mạng

InetAdress, URL, URLConnection

1
Nội dung
 IP
 DNS
 InetAddress
 URL
 URLConnection
IPv4

3
Địa chỉ IPv4
L ớp Cấu trúc địa chỉ Format Số bit Tổng số Tổng số Vùng địa
IP mạng/số mạng/lớp host/mạng chỉ IP
bit host

A 0|netid|hostid N.H.H.H  7/24 27-2=126 224- 1.0.0.1-


2=17.777.214 126.0.0.0

B 1|0|netid|hostid N.N.H.H  14/16 214-2=16382 216-2=65.643 128.1.0.0-


191.254.0.0

C 1|1|0|netid|hostid N.N.N.H 22/8  222- 28-2=245 192.0.1.0-


2=4194302 223.255.254.
0

D 1|1|1|0| địa chỉ -  - - - 224.0.0.0-


Multicast 239.255.255.
255

E 1|1|1|1 -  - - - 240.0.0.0-
254.255.255.
255
Loopba - -  - - - 127.x.x.x
ck
DNS: Domain Name System

 Chức năng clients


 Ánh xạ (tên miền, dịch
vụ) sang giá trị, ví dụ,,
• (www.cs.yale.edu, Addr)
-> 128.36.229.30
• (cs.yale.edu, Email)
-> netra.cs.yale.edu
DNS
• (netra.cs.yale.edu, Tên miền, dịch vụ, routers
Addr) địa chỉ
-> 128.36.229.21

 Tại sao phải dùng tên


thay cho địa chỉ IP? servers

5
DNS: Domain Name System
 Lược đồ tên miền (IANA, ICANN)
 Nslookup (Domain/IP)

6
Quản lý tên miền
 Mỗi nhóm tên (Zone) có một server chứng thực tên
 Mỗi Zone được ủy quyền chứng thực một tập tên miền.

Một Zone

7
Nhóm Zone gốc và Server
 13 servers quản lý zone gốc trên toàn cầu

8
Liên kết giữa các sever DNS

 Mỗi server biết địa chỉ server gốc.


 Mỗi server gốc biết địa chỉ chính nó và địa ch ỉ node
con trực tiếp

Tên miềm cấp cao

9
Ví dụ xác định tên miền

10
Lớp InetAddress
 Biểu diễn và quản lý địa chỉ IP:
java.net.InetAddress
 Cho phép xác định địa chỉ IP dựa vào tên
miền và ngược lại.
 Các lớp mạng khác sử dụng nó để xác định
host ở xa. Ví dụ: Socket,ServerSocket..
Tạo đối tượng InetAddresses
 Không có phương thức khởi tạo.
 Tất cả các đối tượng địa chỉ được tạo ra, địa
chỉ tương ứng phải được kiểm trả với DNS.
 public static InetAddress
InetAddress.getByName(String hostname)
 public static InetAddress[]
InetAddress.getAllByName(String hostname)
 public static InetAddress
InetAddress.getLocalHost()
Tạo đối tượng InetAddresses
Tạo đối tượng: getByName()
 public static InetAddress getByName(String
host) throws UnknownHostException
Tạo đối tượng: getByName()
 public static InetAddress getByName(String
host) throws UnknownHostException

InetAddress ittdtu, tdtu;


try {
ittdtu = InetAddress.getByName("it.tdtu.edu.vn");
tdtu = InetAddress.getByName("118.69.218.67");
}
catch (UnknownHostException e) {
System.err.println(e);
}
Phương thức lấy các thành phần
 public String getHostName()
 public byte[] getAddress()
 public String getHostAddress()
tdtu.edu.vn
Host name:.tdtu.edu.vn
Dia chi IP:118.69.218.69
Ví dụ tdtu.edu.vn/118.69.218.69 thuoc dia chi lop A

import java.net.*;
public class PhanLoaiDCIP
{
public static void main(String[] args) {
try{
if(args.length!=1) System.out.println("Cach su dung: java TimDCIP <Hostname>");
InetAddress host = InetAddress.getByName(args[0]);
String hostName = host.getHostName();
System.out.println("Host name:"+hostName);
System.out.println("Dia chi IP:"+host.getHostAddress());
byte[] b=host.getAddress();
int i=b[0]>=0?b[0]:256+b[0];
if((i>=1)&&(i<=126)) System.out.println(host+" thuoc dia chi lop A");
if((i<=191)&&(i>=128)) System.out.println(host+" thuoc dia chi lop B");
if((i<=223)&&(i>=192)) System.out.println(host+" thuoc dia chi lop C");
}catch(UnknownHostException e){
System.out.println("Khong tim thay dia chi"); return;
}
}}
Ví dụ
import java.net.*;
public class Local {
public static void main(String[] args) {
try {
InetAddress me = InetAddress.getLocalHost();
System.out.println("My name is " + me.getHostName());
System.out.println("My address is " + me.getHostAddress());
byte[] address = me.getAddress();
for (int i = 0; i < address.length; i++) {
System.out.print(address[i] + " ");
}
System.out.println();
}
catch (UnknownHostException e) {
System.err.println("Could not determine local address.");
System.err.println("Perhaps the network is down?");
}
}
} My name is PC
My address is 192.168.1.6
-64 -88 1 6
Phương thức kiểm tra
 public boolean isReachable(int timeout)
throws IOException
 public boolean isMulticastAddress()
 public boolean isSiteLocalAddress()
NetworkInterface
 try {
NetworkInterface ni = NetworkInterface.getByName("eth0");
if (ni == null) {
System.err.println("No such interface: eth0" );
}
} catch (SocketException ex) {
System.err.println("Could not list sockets." );
}

20
NetworkInterface
import java.net.*; import java.util.*;
public class InterfaceLister {
public static void main(String[] args) throws Exception {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces( );
while (interfaces.hasMoreElements( )) {
NetworkInterface ni = (NetworkInterface) interfaces.nextElement( );
System.out.println(ni); }
}
}

21
Cổng ứng dụng
 Một host có một địa chỉ duy nhất để nhận dạng, làm
thế nào để đồng thời nhiều ứng dụng trên một host có
thể giao tiếp với host khác ?
 Cổng-port được sử dụng. Có 65,536 port.
 Một dịch vụ tương ứng với một port. Ví dụ, http chạy
với port 80.
Giao thức
 Mỗi dịch vụ tương ứng với một giao thức.
 Giao thức qui định 2 dịch vụ của 2 host giao
tiếp với nhau như thế nào.
 Ví dụ
 telnet,SMTP,POP3, HTTP
 http://www.faqs.org/rfc/
URL
 URL-"Uniform Resource Locator", xác định
tài nguyên trên mạng Internet.
 Các thành phần của URL.
 Giao thức
 Tên miền
 Cổng
 Đường dẫn
 Chuỗi truy vấn
The java.net.URL class
 Đối tượng biểu diễn URL
 Cho phép kết nối tới server
 Có các phương thức
 Tạo một đối tượng URL mới
 Phân tích các thành phần của URL
 Lấy luồng nhập để đọc dữ liệu từ server
URL
Ví dụ URL
http://java.sun.com/
file:///Macintosh%20HD/Java/Docs/JDK
%201.1.1%20docs/api/
java.net.InetAddress.html#_top_
http://www.macintouch.com:80/newsrecent.shtml
ftp://ftp.info.apple.com/pub/
mailto:elharo@metalab.unc.edu
telnet://utopia.poly.edu
ftp://mp3:mp3@138.247.121.61:21000/c%3a/stuff/mp3/
http://elharo@java.oreilly.com/
https://metalab.unc.edu/nywc/comps.phtml?
category=Choral+Works
Quản lý dữ liệu và giao thức
 Dữ liệu và giao thức tương ứng được kiểm
soát riêng.
 Trình quản lý giao thức giao tiếp với server
ở một kênh riêng. Dữ liệu được truyền tách
biệt ở một luồng nhập riêng InputStream,
ImageProducer.
Tạo đối tượng URL
 public URL(String url) throws
MalformedURLException
 public URL(String protocol, String host, String
file) throws MalformedURLException
 public URL(String protocol, String host, int
port, String file) throws MalformedURLException
 public URL(URL u, String s) throws
MalformedURLException
 Khi máy ảo tạo ra đối tượng URL, thì đồng thời nó tìm trình
quản lý giao thức tương ứng ví dụ “http” hoặc “mailto”.
 Nếu không có, hàm khởi tạo ném ra ngoại lệ
MalformedURLException.
Ví dụ
try {
URL u = new
URL("http://www.poly.edu/fall97/grad.html#cs");
}
catch (MalformedURLException e) {}
Ví dụ
URL u = null;
try {
u = new URL("http", "www.poly.edu",
"/schedule/fall97/bgrad.html#cs");
}catch (MalformedURLException e) {}
Ví dụ
URL u = null;
try {
u = new URL("http", "www.poly.edu", 8000,
"/fall97/grad.html#cs");
}
catch (MalformedURLException e) {}
Ví dụ
try {
URL u1 = new
URL("http://metalab.unc.edu/index.html");
URL u2 = new URL(u1, ”books.html");
}
catch (MalformedURLException e) {}
Thao tác thành phần URL
 public String getProtocol()
 public String getHost()
 public int getPort()
 public String getFile()
 public String getRef()
 public String getQuery()
Ví dụ
try {
URL u = new URL("http://tdtu.edu.vn ");
System.out.println("The protocol is"+u.getProtocol());
System.out.println("The host is " + u.getHost());
System.out.println("The port is " + u.getPort());
System.out.println("The file is " + u.getFile());
System.out.println("The anchor is " + u.getRef());
System.out.println("The query is " + u.getQuery());
}catch (MalformedURLException e) { }

The protocol ishttp


The host is www.poly.edu
The port is -1
The file is /fall97/grad.php?q=idx
The anchor is cs
The Query is q=idx
URLConnection Class
 Lớp Java URLConnection đại diện cho một liên kết giao tiếp giữa URL và ứng
dụng. Nó có thể được sử dụng để đọc và ghi dữ liệu vào tài nguyên được chỉ
định bởi URL.
 URL có 2 thành phần:
- Giao thức cần thiết để truy cập tài nguyên.

- Vị trí của tài nguyên.


URLConnection Class
 Các tính năng của lớp URLConnection
 URLConnection là một lớp trừu tượng. Hai lớp con HttpURLConnection và
JarURLConnection tạo kết nối giữa chương trình Java máy khách và tài nguyên
URL trên internet.
 Với sự trợ giúp của lớp URLConnection, người dùng có thể đọc và ghi vào từ bất
kỳ tài nguyên nào được tham chiếu bởi một đối tượng URL.
 Khi một kết nối được thiết lập và chương trình Java có một đối tượng
URLConnection, chúng ta có thể sử dụng nó để đọc hoặc viết hoặc lấy thêm
thông tin như độ dài nội dung, v.v.
URLConnection Class
 Phương thức khởi tạo:
protected URLConnection(URL url)
URLConnection Class
 Phương thức lớp kết nối URL:
Method Description
-
void addRequestProperty(String key, String value) Nó thêm một thuộc tính yêu cầu chung được chỉ định
bởi một cặp khóa-giá trị
void connect() mở ra một liên kết truyền thông tới tài nguyên được
tham chiếu bởi URL này, nếu một kết nối như vậy
chưa được thiết lập.

boolean getAllowUserInteraction() Nó trả về giá trị của trường allowUserInteraction cho


đối tượng.

int getConnectionTimeout() trả về cài đặt cho thời gian chờ kết nối.

Object getContent() lấy nội dung của kết nối URL.

Object getContent(Class[] classes) truy xuất nội dung của kết nối URL.

String getContentEncoding() trả về giá trị của trường tiêu đề mã hóa nội dung.
URLConnection Class
 Cú pháp
public URLConnection openConnection()throws IOException{}
-
Đọc dữ liệu từ server
 public final InputStream openStream()
throws IOException
 public URLConnection openConnection()
throws java.io.IOException
 public final Object getContent() throws
java.io.IOException
Ví dụ
HttpURLConnection class
 Lớp Java HttpURLConnection chỉ hoạt động với giao thức HTTP
 Với sự trợ giúp của lớp HttpURLConnection, bạn có thể truy xuất thông tin của
bất kỳ URL HTTP nào như thông tin tiêu đề, mã trạng thái, mã phản hồi, v.v.
 Java.net.HttpURLConnection là lớp con của lớp URLConnection.
HttpURLConnection class
 Phương thức khởi tạo:

protected HttpURLConnection(URL u)
HttpURLConnection class
 Các phương thức kết nối HttpURL trong Java:
HttpURLConnection class
 Cách lấy đối tượng của lớp HttpURLConnection

 public URLConnection openConnection()throws IOException{}


 VD:
URL url=new URL(" http://localhost:80/PHP/home.php ");
HttpURLConnection huc=(HttpURLConnection)url.openConnection();
HttpURLConnection class
Mã hóa URL
 Các ký tự trong bảng mã ASCII gồm a-z, A-
Z, , 0-9 và $-_.!*'(), là không thay đổi.
 Các ký tự khoảng cách trắng bị biến đổi thành
dấu cộng (+).
 Các ký tự khác (ví dụ &, =, ^, #, %, ^, {, ..) bị
biến đổi thành dấu phần trăm và theo sau đó là
giá trí trị mã ASCII của nó biểu diễn ở hệ cơ
số 16.
Ví dụ
 Dấu phẩy mã ASCII là (44)10 hay (2C)16 . Vì
vậy, trong URL dấu phẩy được mã là %2C.
 Chuỗi truy vấn
"Author=Sadie, Julie&Title=Women Composers"
 được mã là:
Author=Sadie%2C+Julie&Title=Women+Composers
Lớp URLEncoder
 Cho phép mã hóa URL theo khuôn dạng
x-www-form-url-encoded
 Phương thức tĩnh dùng mã hóa là:
URLEncoder.encode(String s)
 Ví dụ
String qs = "Author=Sadie, Julie&Title=Women Composers";
String eqs = URLEncoder.encode(qs);
System.out.println(eqs);
 Kết quả
Author%3dSadie%2c+Julie%26Title%3dWomen+Composers
Lớp URLDecoder
 Giải mã chuỗi truy vấn có dạng x-www-form-
url-encoded.
 Phương thức tĩnh giải mã
URLEncoder.decode(String s)
Lớp URLConnection
 Cho phép tạo kênh giao tiếp với Server
(FTP, HTTP,..)
 Có thể gửi dữ liệu và đọc dữ liệu
 Mặc định khi kết nối tới HTTP, URL sử dụng
phương thức GET.
 Đọc thông tin Header khi giao tiếp với
Server.
Tạo đối tượng URLConnection
 Tạo đối tượng URL.
 Gọi phương thức openConnection()
 Đọc các trường header.
 Nhận một luồng nhập và đọc dữ liệu.
 Nhận một luồng xuất và ghi dữ liệu.
 Đóng liên kết.
Tạo đối tượng URLConnection
 public Map getHeaderFields()
 public InputStream getInputStream()
 public OutputStream getOutputStream()
 public abstract void connect() throws
IOException
Ví dụ
String s="ftp://it.tdtu.edu.vn/quidinh.doc";
try{
URL u =new URL(s);
try{
URLConnection uc=u.openConnection();
DataInputStream is;
is = new DataInputStream(uc.getInputStream());
String thisLine;
while((thisLine=is.readLine())!=null){
System.out.println(thisLine);
}
} catch(Exception e) { System.err.println(e); }
}catch(MalformedURLException e){System.err.println(e);}
Ví dụ
try{
URL u = new
URL(“http://www.somehost.com/cgi-bin/acgi”);
URLConnection uc = u.openConnection();
uc.setDoOutput(true);
DataOutputStream dos;
dos = new DataOutputStream(uc.getOutputStream());
dos.writeByte("Herre is some data");
}catch(Exception e)
{
System.err.println(e);
}
Các hàm nhận thông tin Header
public String getHeaderField(String name)
public int getContentLength()
public String getContentType()
public String getContentEncoding()
public long getExpiration()
public long getDate()
public long getLastModified()
 Ví dụ:
 uc.getHeaderField("content-type");
 uc.getHeaderField("content-encoding");
Ví dụ
try {
URL u = new URL("http://www.sdexpo.com/");
URLConnection uc = u.openConnection();
uc.connect();
String key=null;
for (int n = 1;
(key=uc.getHeaderFieldKey(n)) != null;
n++) {
System.out.println(key + ": " + uc.getHeaderField(key));
}
}
catch (IOException e) {
System.err.println(e);
}

You might also like