Bài giảng Lập trình mạng Java: Chương 4 - ThS. Nguyễn Minh Thành
lượt xem 3
download
Chương 4 trình bày về tuần tự hóa đối tượng và ứng dụng trong lập trình mạng. Chương này gồm có 2 nội dung chính, đó là: Tuần tự hóa đối tượng trong Java, truyền đối tượng khả tuần tự qua mạng. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng Java: Chương 4 - ThS. Nguyễn Minh Thành
- Chương 4: Tuần tự hóa đối tượng và ứng dụng trong lập trình mạng GIẢNG VIÊN : THS. NGUYỄN MINH THÀNH EMAIL : THANHNM@ITC.EDU.VN
- Nội Dung 1. Tuần tự hóa đối tượng trong Java 2. Truyền đối tượng khả tuần tự qua mạng MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 2
- Tuần tự hóa đối tượng Tuần tự hóa đối tượng (object serialization) Một chương trình có thể chứa những đối tượng dữ liệu rất phức tạp. Object serialization là khả năng biến đổi một đối tượng thành một dãy byte để lưu trữ trên bộ nhớ phụ hoặc truyền đi nơi khác (quan mạng). Object serialization đã được tự động hóa hoàn toàn và hầu như lập trình viên không phải làm gì thêm. Để một đối tượng có thể được "serialize", ta chỉ cần cho nó implement interface Serializable. Mọi việc sau đó như đọc/ghi/truyền/nhận đều do Java thực hiện. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 3
- Tuần tự hóa đối tượng Tuần tự hóa đối tượng (object serialization) Một số lưu ý: Chỉ có các thuộc tính (dữ liệu) của đối tượng mới được serialize. Các thuộc tính được đánh dấu bằng từ khóa transient(nghĩa là có tính tạm thời) sẽ không được serialize. Sau khi serialize, trạng thái của đối tượng được lưu trữ trên bộ nhớ ngoài được gọi là persistence (nghĩa là được giữ lại một cách bền vững). QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 4
- Tuần tự hóa đối tượng Ví dụ public class HocSinh implements Serializable { protected String hoTen; protected int namSinh; protected float diemVan, diemToan; protected transient float diemTrungBinh; // ... } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 5
- Tuần tự hóa đối tượng Các đối tượng built-in có thể tuần tự hóa Một số đối tượng được xây dựng sẵn trong thư viện của Java cũng có thể tuần tự hóa : java.util.Date java.io.File … Tuy nhiên, cũng có một số lớp không thể tuần tự hóa như java.net.Socket java.io.InputStream … Để kiểm tra lớp có thể tuần tự hóa hay không : sử dụng tool serialver trong bộ JDK QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 6
- Tuần tự hóa đối tượng Luồng đọc và ghi đối tượng khả tuần tự Trong Java, các lớp đảm nhận việc đọc/ghi đối tượng khả tuần gồm: • ObjectInputStream: đọc dãy byte và chuyển thành đối tượng phù hợp. • ObjectOutputStream: chuyển đối tượng thành dãy byte và ghi. 2 hàm trên được sử dụng kết hợp với các luồng khác để ghi/ đọc dữ liệu ra/từ file. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 7
- Tuần tự hóa đối tượng Luồng đọc và ghi đối tượng khả tuần tự Cơ chế đọc và ghi đối tượng khả tuần tự QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 8
- Tuần tự hóa đối tượng Ví dụ : đọc/ ghi đối tượng Date //Ghi đối tượng FileOuputStream fos=new FileOuputStream("date.out"); ObjectOuputStream oos=new ObjectOuputStream(fos); Date d=new Date(); oos.writeObject(d); //Đọc đối tượng FileInputStream fis=new FileInputStream("date.out"); ObjectInputStream ois=new ObjectInputStream(fis); Date d=(Date)ois.readObject(); QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 9
- Tuần tự hóa đối tượng Ví dụ : đọc ghi đối tượng Phân Số public class PhanSo implements Serializable { protected inttu,mau; private transient floatval=0; publicPhanSo() { tu=0; mau=1; } publicPhanSo(inttu, intmau){ this.tu=tu; this.mau=mau; val=(float)tu/mau; } public String toString() { return tu+"/"+mau+" ("+val+")"; } } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 10
- Tuần tự hóa đối tượng Ví dụ : đọc ghi đối tượng Phân Số (tt) // Ghi dữliệu FileOutputStream fo=new FileOutputStream("C:\\TestO.bin"); BufferedOutputStream bo=new BufferedOutputStream(fo); ObjectOutputStream oo=new ObjectOutputStream(bo); System.out.println("Du lieu ghi duoc:"); for(int i=0;i
- Tuần tự hóa đối tượng Ví dụ : đọc ghi đối tượng Phân Số (tt) // Đọc dữliệu FileInputStream fi=new FileInputStream("C:\\TestO.bin"); BufferedInputStream bi=new BufferedInputStream(fi); ObjectInputStream oi=new ObjectInputStream(bi); System.out.println("\nDu lieu doc duoc:"); while(bi.available()>0) { PhanSo ps=(PhanSo)oi.readObject(); System.out.println(ps); } oi.close(); QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 12
- Tuần tự hóa đối tượng Truyền đối tượng khả tuần tự qua TCP Socket Mô hình truyền đối tượng khả tuần tự qua TCP Socket QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 13
- Tuần tự hóa đối tượng Truyền đối tượng khả tuần tự qua TCP Socket (tt) Giả sử có một Socket s, ta sẽ nhận dũ liệu từ luồng nhập : InputStream is=s.getInputStream() ; ObjectInputStream ois=new ObjectInputStream(is); Object obj=(Object)ois.readObject(); Gửi dữ liệu qua luồng xuất đối tượng: ObjectOuput os=s.getObjectOuput(); ObjectOuputStream oos=new ObjectOutputStream(os); oos.writeObject(obj); oos.flush(); QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 14
- Tuần tự hóa đối tượng Ví dụ : Truyền đối tượng khả tuần tự qua TCP Xây dựng lớp đối tượng khả tuần tự : public class ArrayObject implements java.io.Serializable{ private int[] a=null; public ArrayObject(){ } public void setArray(int a[]){ this.a=a; } public int[] getArray(){ return a; } } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 15
- Tuần tự hóa đối tượng Ví dụ : Truyền đối tượng khả tuần tự qua TCP (tt) Xây dựng Client public class ArrayClient{ public static void main(String[] args)throws Exception{ ObjectOutputStream oos=null; ObjectInputStream ois=null; int dat1[]={3,3,3,3,3,3,3}; int dat2[]={5,5,5,5,5,5,5}; Socket s=new Socket("localhost",1234); oos=new ObjectOutputStream(s.getOutputStream()); ois=new ObjectInputStream(s.getInputStream()); ArrayObject a1=new ArrayObject(); a1.setArray(dat1); QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 16
- Tuần tự hóa đối tượng Ví dụ : Truyền đối tượng khả tuần tự qua TCP (tt) Xây dựng Client (tt) ArrayObject a2=new ArrayObject(); a2.setArray(dat2); ArrayObject res=null; int r[]=new int[7]; oos.writeObject(a1); oos.writeObject(a2); oos.flush(); res=(ArrayObject)ois.readObject(); r=res.getArray(); System.out.println("The result received from server..."); System.out.println(); for(int i=0;i
- Tuần tự hóa đối tượng Ví dụ : Truyền đối tượng khả tuần tự qua TCP (tt) Xây dựng Server ServerSocket ss=new ServerSocket(1234); System.out.println("Server running on port "+1234); System.out.println("Waiting for client..."); Socket s=ss.accept(); System.out.println("Accepting a connection from:"+s.getInetAddress()); ObjectInputStream ois=new ObjectInputStream(s.getInputStream()); ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 18
- Tuần tự hóa đối tượng Ví dụ : Truyền đối tượng khả tuần tự qua TCP (tt) Xây dựng Server (tt) ArrayObject x=(ArrayObject)ois.readObject(); ArrayObject y=(ArrayObject)ois.readObject(); int a1[]=x.getArray(); int a2[]=y.getArray(); int r[]=new int[7]; for(int i=0;i
- Tuần tự hóa đối tượng Truyền đối tượng khả tuần tự qua UDP Mô hình truyền đối tượng khả tuần tự qua UDP Socket QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng
119 p | 1921 | 1059
-
Bài giảng Lập trình mạng: Lập trình Socket với Java - TS. Nguyễn Hoài Sơn
44 p | 152 | 30
-
Bài giảng Lập trình mạng: Phần 1
75 p | 157 | 24
-
Bài giảng Lập trình mạng với Java
66 p | 148 | 21
-
Bài giảng Lập trình mạng: Chương 2 - ĐH Công nghệ Đồng Nai
65 p | 77 | 8
-
Bài giảng Lập trình mạng: Chương 0 - ĐH Công nghệ Đồng Nai
4 p | 106 | 7
-
Bài giảng Lập trình mạng: Chapter 4 - Nguyễn Thị Thanh Vân
87 p | 67 | 7
-
Bài giảng Lập trình mạng: Java remote method invocation - GV. Nguyễn Xuân Vinh
26 p | 74 | 7
-
Bài giảng Lập trình mạng: Chapter 3 - Nguyễn Thị Thanh Vân
93 p | 83 | 6
-
Bài giảng Lập trình mạng: Giới thiệu sơ lược về ngôn ngữ Java - Bùi Minh Quân
54 p | 76 | 6
-
Bài giảng Lập trình mạng - Chương 2: Giới thiệu sơ lược về ngôn ngữ Java
54 p | 80 | 6
-
Bài giảng Lập trình mạng: Ống dẫn - Bùi Minh Quân
10 p | 65 | 5
-
Bài giảng Lập trình mạng: Java - Nguyễn Hữu Thể
43 p | 47 | 5
-
Bài giảng Lập trình mạng: Giới thiệu một số thư viện hàm bằng Java hỗ trợ xây dựng ứng dụng mạng - Bùi Minh Quân
21 p | 88 | 5
-
Bài giảng Lập trình mạng: Chapter 2 - Nguyễn Thị Thanh Vân
35 p | 77 | 4
-
Bài giảng Lập trình mạng: Chương 2 - Phạm Trần Vũ
38 p | 80 | 4
-
Bài giảng Lập trình mạng Java: Chương 0 - ThS. Nguyễn Minh Thành
8 p | 71 | 3
-
Bài giảng Lập trình mạng - Chương 3: Ống dẫn
10 p | 79 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn