intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình mạng Java: Chương 4 - ThS. Nguyễn Minh Thành

Chia sẻ: You Can | Ngày: | Loại File: PDF | Số trang:24

57
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng Java: Chương 4 - ThS. Nguyễn Minh Thành

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  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 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
  17. 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
  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 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2