1. Trang chủ
  2. » Hoá học lớp 11

Lập trình mạng - Chương 5: Lập trình mạng với Java

7 26 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 153,54 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Server gửi trả dữ liệu qua địa chỉ và cổng của client chứa trong gói tin này. Tham khảo ví dụ:[r]

Trang 1

Chuong 5

LẬP TRÌNH MẠNG VỚI Java

(Gói thư viện Java.net)

Nội dung

L1 Giới thiệu gói thư viện Java.net L1 Sử dụng TCP socket

L1 Sử dụng UDP socket L1 RMI và kỹ thuật phần tán đối tượng

Giới thiệu gói thư viện Java.net

L1 Một số lớp cần thiết trong gói thư viện

java.net:

m InetAddress: quan ly dia chi Internet m™ Socket: tao két ndi tu client dén server

m ServerSocket: tao kết nối từ phía server đến

client

m DatagramSocket: gửi nhận dữ liệu dưới dạng gói tin

= DatagramPackage: gói tin chứa dữ liệu gửi nhận sử dụng cho lớp DatagramSocket

m URL: địa chỉ định vị tài nguyên trên mang

H Sử dụng để quản lý địa chỉ host theo tên hay số

O Các phương thức thường được sử dụng:

° staEic InetAddress getLocalHost() : trả về đối tượng

TnetAddress là địa chỉ của máy cục bộ(localhost)

* static InetAddress getByName (String hostName) : trả về đối tượng InetAddress là địa chỉ của máy có tên là hostName

* static InetAddress[] getAllByName (Str1ng

hostName) : trả về tất cả các đối tượng TnetAddress là địa chỉ của máy có tên là hostName

- - byte[] getAddress () : trả về địa chỉ ïP của đối tượng TnetAddress dưới dạng chuối byte

- = string getHostAddress () : (rả về địa chỉ IP của đối tượng

TnetAddress dưới dạng string

Trang 2

Lớp InetAddress(tt)-Ví dụ

try{

⁄/Lây đôi tượng TnetAddress chúa thông tin về máy chủ InetAddress host=

InetAddress.getByName (“www.hcmutrans.edu.vn”);

Sytem.out.printin(“Host Name : ”+hostE.getHostName () ) ; Sytem.out.printin(“IP Address:”+host.getHostAddress());

}

catch( UnknownHostException e) {

System.out.printin(“Address not found!”);

Lớp Socket

Sử dụng cho client kết nối đến server L1 Các hàm tạo

* Socket(String hostName,inE port): tạo đối tượng socket và kết nối đến server hostName ở số hiệu cổng port

° Socket(TnetAddress address,int port): tạo đối tượng socket kết nối đến address va port

° SoCket(String hostName, int port, boolean

stream): tạo đối tượng socket kết nối đến hostName và port, stream=true nếu qui định kết nối theo TCP, stream=false nếu qui định kết nối theo UDP Tuy nhiên nếu sử dụng socket theo UDP thì nên sử dụng lớp DatagramSocket

Lớp Socket(tt)

L1 Các phương thức thường được sử dụng:

°Ồ InputStream getInputStream() : /ay luéng

nhập để có thể nhận dữ liệu từ máy ở xa

* OutputStream getOutputStream(): /ay luông

xuất để có thể gửi dữ liệu đến máy ở xa

* TnetAddress getTnetAddress () : trả về đối

tượng TnetAddress chứa địa chỉ của máy đang kết nối đến

- inE getPort(): trả về số hiệu cổng sử dụng của

máy đang kết nối

- void close (): đóng socket, cắt kết nối

try{

⁄⁄Kêt nỗi đễn máy chù

Socket mySocket=new Socket (“www.hcmutrans.edu.vn”, 8080);

⁄/Luông nhập dé nhaén di liệu

DataInputStream inStream=new DataInputStream(mySocket.getInputStream());

/⁄/Luông xuật đề gửi đữ liệu

DataOutputStream outStream=new DataOutputStream (mySocket.getOutputStream());

//Bat dau gui nhận dữ liệu gua inStream và ouEStream

}

catch(Exception e){

System.out.printin(e);

}

Trang 3

Lớp ServerSocket

L1 Sử dụng cho server, tao socket va lang

nghe kết nối trên một port L1 Hàm tạo và các phương thức:

-Ổ = ServerSocket(int port): tạo đối tượng socket và lắng

nghe G port

* Socket accept ()! dung lại và đợi client kết nối đến, khi

nhận được thông tín kết nối sẽ trả vê đối tượng Socket kết nổi với client

* void close(): cắt kết nối và đóng socket

Lớp ServerSocket(tt)-Ví dụ

try{

/⁄/Tạo serverSocket lắng nghe ở công 12345 ServerSocket server=new ServerSocket (12345);

//Cho client két néi dén

Socket client=server.accept ();

//Tao InputStream va OutputStream qua socket client

⁄Z_ và bắt đầu gửi nhận đũữ liệu

} catch (Exception e) { System.out.printin(e);

10

Lớp DatagramSocket

L1 Sử dụng giao thức UDP, truyén nhận dữ

liệu dưới dạng gói tin

L1 Hàm tạo và các phương thức:

- = DatagramSocket(): tạo đối tượng socket sử dụng giao thức

UDP

* DatagramSocket (int port)! tao déi tuong socket va két

nối đến số hiệu cổng port

* void send(DatagramPacket p): gửi gói tin p đi

* void receive(DatagramPacket p): nhận gói tin p về

* void close(): đóng socket

1 Khai báo gói tin gửi đi trên mạng qua kết nối DatagramSocket

1 Hàm tạo và các phương thức:

* DatagramPacket (byte buffer[], int len): tạo gói tin

có dữ liệu chứa trong bu£f£fer, chiều dài buffer là 1en

* DatagramPacket (byte buffer[], int len,

InetAddress dest, int port): tao gdi tin gui dén dia chi

dest với số hiệu céng port

* InetAddess getAddress(): lấy địa chỉ chứa trong gói tin

* int getPort(): lấy số hiệu cổng chứa trong gói tin

- byte[] getData(): lấy dữ liệu trong gói tin

- = inE getLength(): lấy chiều dài gói dữ liệu

12

Trang 4

Lớp DatagramSocket &

DatagramPacket(tt)-Ví dụ

try{

/⁄/Tạo socket UDP kệt nỗi với công 2345

DatagramSocket socket=new DatagramSocket (2345);

⁄/Khai báo Bu£fer gửi nhận

byte outBuffer[];

byte inBuffer[]=new byte[256];

//Khai bdo Datagram Packet để gửi và nhận

DatagramPacket outDatagram;

DatagramPacket inDatagram=new DatagramPacket (inBuffer, inBuffer.length) ;

⁄⁄Bắt đầu gửi nhận dữ liệu

⁄⁄_ nhận dỡ liệu:

socket.receive(inDatagram); // xu ly d@ 116u 6 inBuffer

⁄⁄ chudn bi dt 1iéu trong outDatagram

⁄⁄ gủi dũ liệu:

socket.send (outDatagram) ;

}

catch(Exception e) {

System.out.printin(e);

}

13

Lớp URL

1 URL(Uniform Resource Locator): sử dụng để định vị tài nguyên mạng

L1 Hàm tạo và các phương thức:

- = URL(String s): tạo đối tượng URL từ địa chỉ s là một chuỗi

* Object getContent ()! lấy về nội dung từ địa chỉ URL có

được

- String getFile(): lấy về tên tập tin nằm trong chuỗi địa

chi URL

* String getHost(): lay tén may chu

* int getPort(): lay số hiệu cổng

* InputStream openStream(): md ludng dé doc théng tin từ máy chủ

14

Lớp URL-Ví dụ

try{

//Tao URL két néi dén trang web

URL url=new URL (“http://www.hcmutrans.edu.vn/index.htm”);

/⁄/Tạo luông nhập để đọc đữ liệu

BufferReader inStream=new BufferReader (new

InputStreamReader (url.openStream()));

//In nội dung trang index.htm ra man hình

String s;

while ((s=inStream.readLine())!=null) {

System.out.printlin(s);

}

}

catch (Exception e) {

System.out.printin(e);

}

15

Su dung TCP socket

1 Server: tạo một đối tượng ServerSocket lãng nghe đến một số hiệu cổng nào đó

L1 Client: tạo một đối tượng Socket kết nối với server qua tên/địa chỉ IP và số hiệu cổng

L1 Tham khảo hai ví dụ:

ã TimeServer/TimeClient: server phục vụ truy van ngày giờ

m CalServer/CalClient: Server phục vụ chức năng

tính toán

Trang 5

Su dung UDP socket

O Server: tạo một đối tượng DatagramSocket

lắng nghe đến một số hiệu cổng nào đó

1 Client: tạo một đối tượng DatagramSocket

và gửi dữ liệu đến server qua địa chỉ và

cổng đã được biết trước Server gửi trả dữ

liệu qua địa chỉ và cổng của client chứa trong gói tin này

L1 Tham khảo ví dụ:

m CurrencyServer/CurrencyClient: server phuc vu

truy van gia ca ngoai té

RMI va ky thuat lap trinh phan tan đối tượng

L1 Khái niệm lập trình phan tán đối tượng

L1 Thiết kế ứng dụng phần tán RMI L1 Vấn đề truyền tham số

L1 Kết nối mạng và vấn đề tường lửa(firewall)

CL) SOAP

17 18

Khai niém lap trinh phan tan doi

tượng

H Các đối tượng nằm phân tán trên các máy

vật lý khác nhau

1 Đối tượng có thể triệu gọi phương thức của

đối tượng nằm trên một máy khác - triệu gọi từ xa

O RMI (Remote method Invoke): la cach thuc

giao tiếp của các đối tượng Java có mã lệnh

cài đặt nằm trên các máy khác nhau có thể

triệu gọi lần nhau

Khái niệm lập trình phan tan doi

tượng(tt)

+ A1, A2 là các đối

Computer A tượng trên máy A

+ BI là đối tượng trên

> a may B

a + C1,C2,C3 là các đối

tượng trên máy C

Computer B

»

19 20

Trang 6

B1 Tao interface Calculator

O Interface Calculator can ké thừa lớp Remote để có

thể gọi được từ xa

O File Calculator.java có nội dung như sau

import java.rmi.*;

public interface Calculator extends Remote {

public int sum(int n);

// sum = 1+2+3+ Tn

}

⁄/Chỉ khai báo các phương thúc và

/⁄/đôi sô, không có nội dung

25

B2 Tạo lớp CalculatorTmpl hiện

thực interface Calculator

L1 File CalculatorImpl.java có nội dung:

import java.rmi.*;

public class CalculatorImpl implements Calculator {

public int sum(int n) { int s=0;

for (int i=l1;i<n;i++)

s=st+i;

return Ss;

26

B3 Dich thanh cac file class, tao

Stub & Skeleton

C:\>javac Calculator.java

C:\>javac CalculatorImpl.java

C:\>rmic CalculatorImpl

L1 Kết quả quá trình dịch được các file:

m Calculator.class

m CalculatorTmpl.class

m CalculatorTmpl_ Stub.class

m CalculatorTmpl_ Skel.class

27

B4 Xây dựng CalculatorServer.java

đề cài đặt đối tượng Calculator

import java.rmi.server.*;

import java.rmi.*;

public class CalculatorServer{

public static void main(String args[]){

try{

CalculatorImpl c=new CalculatorImpl();

System.out.printin("Exporting Calculator ");

UnicastRemoteObject.exportObject(c);

Naming.bind("rmi://localhost/MyCalculator",c);

System.out.printin("Register Calculator!");

}catch(Exception e){

System.out.printin(e);

3

t +

Trang 7

B5 Thuc thi bo dang ky doi tudng

rmiregistry.exe

L1 Chức nang của bộ đăng ký là đón nhận các

kết nối chứa thông tin vê đối tượng do phương thức Naming.bind() gửi đến

L1 Kích hoạt bộ đăng ky:

C:\jsdk\bin\rmiregistry.exe

O Kich hoat CalculatorServer:

java CalculatorServer

29

B6 Xay dung CalculatorClient.java

su dung doi tudng Calculator

import java.rmi.*;

public class CalculatorClient{

public static void main(String args[]){

try{

System.out.printIn("Finding Object ");

Calculator c=(Calculator)Naming.lookup(“rmi://localhost/MyCalculator");

//Test c System.out.printiIn(’Sum(12)= " + c.sum(12));

}catch(Exception e)4

System.out.printin(e);

}

Ỳ +

30

Triển khai ứng dụng

L1 Trên Server cần các file sau:

Calculator.class

m CalculatorTmpl.class

m CalculatorImpl_Skel.class

m CalculatorTImpl_ Stub.class

m CalculatorServer.class L1 Trên Client cần các file sau:

m Calculator.class

m CalculatorTImpl_ Stub.class

m CalculatorClient.class

phương thức tử xa

L1 Tham số: tham trị và tham biến

LI Tham số trong RMI:

m Các kiểu dữ liệu đơn giản như: int, char,

float, được truyền theo tham trị

m Các đối tượng muốn truyén qua mang phải cài đặt giao tiếp Remote hoặc Serializable Đối tượng cài đặt Remote

sẽ truyên tham biến, cài đặt theo Serializable truyền theo tham trị

32

Ngày đăng: 09/03/2021, 05:10

TỪ KHÓA LIÊN QUAN

w