Giáo trình Lập trình truyền thông - Ngô Bá Hùng

Tóm tắt Giáo trình Lập trình truyền thông - Ngô Bá Hùng: ...Integer number = "+i ); System.out.println("Long number = "+l ); System.out.println("Float number = "+f ); } } Biên dịch và thực thi chương trình được kết quả sau: 1.4. Ngoại lệ (EXCEPTION) Trong chương trình, có một số các "thao tác không chắc chắn", ví dụ như các thao tác vào/ra...hai ống dẫn: một ống dẫn để truyền các yêu cầu (request), một ống dẫn để truyền các trả lời (reply). Hình 3.2 – Dùng ống dẫn trong chương trình Client -Server Có hai loại ống dẫn: • Ống dẫn bình thương ( Normal Pipe): Giới hạn trong phạm vi không gian địa chỉ của một quá trình mà thôi. Nó ..., ta có thể đặt thông tin trên DatagramPacket này bằng các phương thức sau: • public synchronized() void setAddress(IntermetAddress dis) : Đặt địa chỉ máy nhận. • public synchronized() void setPort(int port) : Đặt cổng quá trình nhận • public synchronized() void setData(byte buffer[]) : Đặ...

pdf96 trang | Chia sẻ: havih72 | Lượt xem: 228 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Lập trình truyền thông - Ngô Bá Hùng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Interfacename object = null; 
 try { 
 object = (InterfaceName)Naming.lookup(remoteObjectURL); 
 object.remoteMethodOne(); 
 ... 
 } 
 catch (Exception e) { 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 88
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
 System.out.println(" Error: ”+ e); 
 } 
 } 
} 
o Tạo client có tên là HelloClient, tìm đối tượng HelloObject trên 
rmiregistry chẳng hạn tại địa chỉ 172.18.211.160. Gọi phương thức 
sayHello() và in kết quả trả về ra màn hình. 
import java.rmi.Naming; 
import java.rmi.RemoteException; 
public class HelloClient { 
 public static void main(String args[]) { 
 String helloURL = "rmi://172.18.211.160/HelloObject"; 
 HelloItf object = null; 
 try { 
 object = (HelloItf)Naming.lookup( helloURL); 
 String message = object.sayHello(); 
 System.out.println(message); 
 } 
 catch (Exception e) { 
 System.out.println("Client Error :" + e); 
 } 
 } 
} 
Lưu chương trình vào tập tin HelloClient.java 
Bước 05: Dịch các tập tin nguồn theo dạng RMI để tạo ra các lớp tương 
ứng và stub cho client, skeleton cho server: 
o Cú pháp tổng quát: 
javac InterfaceName.java RemoteClass.java Server.java Client.java 
( Tạo ra các lớp InterfaceName.class RemoteClass.class Server.class 
Client.class) 
rmic RemoteClass 
( Tạo ra các lớp cho Skeleton và Stub: RemoteClass_Skel.class 
RemoteClass_Stub.class) 
o Biên dịch các lớp trong Hello: 
javac Hello.java HelloItf.java HelloServer.java HelloClient.java 
rmic Hello.class 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 89
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
Bước 06: Khởi động dịch vụ rmiregistry 
o Cú pháp tổng quát: 
start rmiregistry [port] 
Cổng mặc định là 1099. 
o Khới động dịch vụ rmiregistry trên cổng mặc định như sau: 
Khi đó rmiregistry server sẽ chạy trên một cửa sổ mới, giữ nguyên cửa sổ này, 
không đóng nó lại. 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 90
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
Bước 07: Thực hiện chương trình Server 
o Cú pháp tổng quát: 
java -Djava.security.policy =UrlOfPolicyFile ServerName 
Trong đó UrlOfPolicyFile là địa chỉ theo dạng URL của tập tin mô tả chính 
sách về bảo mật mã nguồn của Server (policy file). Nó qui định "ai" (chương 
trình, máy tính, quá trình trên) sẽ có quyền download các tập tin của nó trong 
đó có stub. Để đơn giản trong phần này ta cho phép tất cả mọi người đều có 
quyền download các tập tin của Server. Khi triển khai các ứng dụng thật sự 
ta phải có các chính sách bảo mật nghiêm ngặt hơn (Tham khảo tài liệu về 
Security của Java). File policy có dạng như sau: 
grant { 
// Allow everything for now 
permission java.security.AllPermission; 
}; 
Lưu nội dung trên vào tập tin có tên policy.java 
o Thực thi HelloServer với địa tập tin plolicy nằm ở thư mục 
D:\progs\policy.java 
Bước 08: Thực thi chương trình Client: 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 91
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
o Cú pháp tổng quát 
java ClientName 
o Thực thi HelloClient với địa chỉ của rmiregistry đưa vào trong tham số 
Để thực thi được chương trình HelloClient cần có hai class nằm cùng thư mục với 
nó là HelloItf.class và Hello_Stub.class. 
1.4. Bài tập áp dụng 
• Mục đích: 
Xây dựng ứng dụng phân tán theo cơ chế RMI. 
• Yêu cầu 
Sinh viên thực hiện các bài tập sau: 
o Bài 1 : Xây dựng một ứng dụng phục vụ việc bán vé máy bay cho các 
đại lý phân tán ở các tỉnh thành khác nhau. Ứng dụng này có các lớp 
sau: 
ƒ Lớp chuyến bay: Đại diện cho một chuyến bay 
ƒ Có các thuộc tính: Số hiệu chuyến bay, Ngày giờ bay, 
Nơi đi, Nơi đến, Thời gian bay, Tổng số ghế, Số lượng 
ghế đã bán, Số lượng ghế còn trống. 
ƒ Các phương thức trên một chuyến bay: phương thức xem 
thông tin về chuyến bay, phương thức mua vé, phương 
thức trả vé. Để phục vụ cho nhiều đại lý các phương thức 
trên thuộc loại đuợc gọi từ xa. 
ƒ Lớp Server, tạo ra nhiều chuyến bay và duy trì nó để cho phép 
các đại lý thực hiện các giao dịch trên chuyến bay cụ thể. 
ƒ Client là chương trình cho phép mỗi đại lý được quyền xem 
thông tin về chuyến bay, mua vé, trả vé theo yêu cầu. 
Mục lục 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 92
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
CHƯƠNG 1..........................................................................................................................1 
Tổng quan về lập trình truyền thông....................................................................................1 
1.1. Cơ chế giao tiếp liên quá trình là gì ?.....................................................................2 
1.2. Phân loại cơ chế giao tiếp liên quá trình ................................................................2 
1.3. Mô hình tham khảo OSI .........................................................................................3 
1.4. Mạng TCP/IP..........................................................................................................6 
1.5. Dịch vụ mạng .........................................................................................................7 
1.6. Mô hình Client – Server .........................................................................................7 
1.6.1. Giới thiệu.........................................................................................................7 
1.6.2. Ví dụ về dịch vụ Web......................................................................................8 
1.6.3. Các chế độ giao tiếp ........................................................................................9 
1.6.3.1. Chế độ nghẽn :..........................................................................................9 
1.6.3.2. Chế độ không nghẽn:................................................................................9 
1.7. Các kiểu kiến trúc chương trình .............................................................................9 
1.7.1. Kiến trúc đơn tầng (Single-tier Architecture) ...............................................10 
1.7.2. Kiến trúc hai tầng (Two - Tier Architecture) ................................................10 
1.7.2.1. Loại Fat Client........................................................................................11 
1.7.2.2. Loại Fat Server .......................................................................................12 
1.7.3. Kiến trúc đa tầng (N-Tier Architecture)........................................................12 
1.8. Bài tập...................................................................................................................13 
1.8.1. Bài tập bắt buộc.............................................................................................13 
1.8.2. Bài tập gợi ý ..................................................................................................13 
Tìm đọc và viết một báo cáo không quá 10 trang về giao thức POP3...............................13 
CHƯƠNG 2........................................................................................................................14 
Sơ lược về ngôn ngữ Java ..................................................................................................14 
1.1. Giới thiệu về ngôn ngữ Java.................................................................................15 
1.1.1. Lịch sử phát triển...........................................................................................15 
1.1.2. Khả năng của ngôn ngữ Java.........................................................................15 
1.1.2. Những đặc điểm của ngôn ngữ Java .............................................................15 
1.1.3. Máy ảo Java (JMV - Java Virtual Machine) .................................................15 
1.1.4. Hai kiểu ứng dụng dưới ngôn ngữ java.........................................................16 
1.1.5. Bộ phát triển ứng dụng Java (JDK- Java Development Kit) ........................16 
1.1.6. Kiểu dữ liệu cơ bản dưới Java.......................................................................16 
1.1.7. Các phép toán cơ bản ....................................................................................17 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 93
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
1.1.8. Qui cách đặt tên trong Java ...........................................................................17 
1.2. Chương trình ứng dụng kiểu Application ............................................................18 
1.2.1. Chương trình HelloWorld .............................................................................19 
1.2.3. Biên soạn chương trình bằng phần mềm Notepad của Ms Windows ...........19 
1.2.4. Cài đặt bộ phát triển ứng dụng JDK..............................................................20 
1.2.5. Biên dịch và thực thi chương trình................................................................20 
1.2.6. Một số ví dụ...................................................................................................21 
1.2.6.1. Hiển thị thông tin ra màn hành...............................................................21 
1.2.6.2. Đọc ký tự từ bàn phím............................................................................21 
1.3. Các cấu trúc điều khiển trong Java.......................................................................23 
1.3.1. Lệnh if – else .................................................................................................23 
1.3.2. Phép toán ? ....................................................................................................24 
1.3.3. Lệnh switch ...................................................................................................25 
1.3.4. Lệnh while.....................................................................................................26 
1.3.5. Lệnh do - while..............................................................................................27 
1.3.6. Lệnh for .........................................................................................................27 
1.3.7. Lệnh break.....................................................................................................28 
1.3.8. Lệnh continue ................................................................................................29 
1.3.9. Một số vấn đề khác........................................................................................30 
1.3.9.1. Đọc đối số của chương trình ..................................................................30 
1.3.9.2. Đổi chuỗi thành số..................................................................................31 
1.4. Ngoại lệ (EXCEPTION) ......................................................................................31 
1.5. Một số vấn đề liên quan đến lớp trong Java.........................................................33 
1.5.1. Định nghĩa lớp mới........................................................................................33 
1.5.2. Phạm vi nhìn thấy của một lớp......................................................................34 
1.5.3. Tính thừa kế...................................................................................................35 
1.6. Vào / Ra với Stream ............................................................................................36 
1.6.1. Lớp java.io.InputStream................................................................................37 
1.6.2. Lớp java.io.OutputStream .............................................................................39 
1.6.3. Nhập chuỗi từ một InputStream ....................................................................40 
1.6.4. Xuất chuỗi ra một OutputStream ..................................................................41 
1.7. Luồng (Thread).....................................................................................................42 
1.7.1. Các mức cài đặt luồng ...................................................................................43 
1.7.1.1. Tiếp cận luồng ở mức người dùng: ........................................................44 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 94
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
1.7.1.2. Tiếp cận luồng ở mức hạt nhân hệ điều hành.........................................44 
1.7.2. Luồng trong java ...........................................................................................44 
1.7.2.1 Độ ưu tiên của luồng ...............................................................................47 
1.7.3. Đồng bộ hóa giữa các luồng..........................................................................49 
1.8. Bài tập áp dụng.....................................................................................................49 
Chủ đề 1: Cơ bản về Java ........................................................................................49 
Chủ đề 2: Thiết kế lớp trong Java ...........................................................................49 
Chủ đề 3: Thread .....................................................................................................50 
CHƯƠNG 3........................................................................................................................51 
Ống dẫn (Pipe) ...................................................................................................................51 
1.1. Giới thiệu về ống dẫn ...........................................................................................52 
1.2. Ống dẫn trong Java...............................................................................................52 
1.2.1. Giới thiệu.......................................................................................................52 
1.2.2. Các cách tạo ống dẫn.....................................................................................53 
1.3. Dịch vụ phản hồi thông tin (Echo Service) ..........................................................53 
1.4. Giả lập dịch vụ phản hồi thông tin bằng Pipe ......................................................54 
1.4.1. Lớp PipedEchoServer....................................................................................54 
1.4.2. Lớp PipedEchoClient ....................................................................................55 
1.4.3. Lớp PipedEcho ..............................................................................................55 
1.4.5. Biên dịch và thực thi chương trình................................................................56 
CHƯƠNG 4........................................................................................................................57 
Socket .................................................................................................................................57 
1.1. Giới thiệu về socket..............................................................................................58 
1.1.1. Giới thiệu.......................................................................................................58 
1.1.2. Số hiệu cổng (Port Number) của socket........................................................58 
1.1.3. Các chế độ giao tiếp ......................................................................................60 
1.2. Xây dựng ứng dụng Client-Server với Socket .....................................................61 
1.2.1. Mô hình Client-Server sử dụng Socket ở chế độ có nối kết (TCP) ..............61 
1.2.2. Mô hình Client-Server sử dụng Socket ở chế độ không nối kết (UDP)........63 
1.3. Socket dưới ngôn ngữ Java ..................................................................................64 
1.3.1. Xây dựng chương trình Client ở chế độ có nối kết .......................................65 
1.3.1.1. Lớp java.net.Socket ................................................................................65 
1.3.1.2. Chương trình TCPEchoClient ................................................................66 
1.3.2. Xây dựng chương trình Server ở chế độ có nối kết ......................................67 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 95
Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ - Giáo Trình Lập Trình Truyền Thông 
1.3.2.1. Lớp java.net.ServerSocket .....................................................................67 
1.3.2.2. Xây dựng chương trình Server phục vụ tuần tự .....................................67 
1.3.2.3. Chương trình STCPEchoServer .............................................................68 
1.3.2.4. Server phục vụ song song.......................................................................69 
1.3.2.5. Chương trình PTCPEchoServer .............................................................70 
1.3.3. Xây dựng chương trình Client - Server ở chế độ không nối kết ...................71 
1.3.3.1. Lớp DatagramPacket ..............................................................................72 
1.3.3.2. Lớp DatagramSocket..............................................................................73 
1.3.3.3. Chương trình UDPEchoServer...............................................................74 
1.3.3.4. Chương trình UDPEchoClient ...............................................................75 
1.4. Bài tập áp dụng.....................................................................................................77 
CHƯƠNG 5........................................................................................................................79 
RPC và RMI.......................................................................................................................79 
1.1. Lời gọi thủ tục xa (RPC- Remote Procedure Call) ..............................................80 
1.1.1. Giới thiệu.......................................................................................................80 
1.1.2. Kiến trúc của chương trình Client-Server cài đặt theo cơ chế lời gọi thủ 
tục xa 80 
Hình 5.1 Kiến trúc chương trình kiểu RPC........................................................................80 
1.2. Kích hoạt phương thức xa (RMI- Remote Method Invocation ) .........................81 
1.2.1. Giới thiệu.......................................................................................................81 
1.2.2. Kiến trúc của chương trình Client-Server theo cơ chế RMI .........................82 
1.2.3. Các cơ chế liên quan trong một ứng dụng đối tượng phân tán .....................83 
1.2.4. Cơ chế vận hành của của một ứng dụng Client-Server theo kiểu RMI ........84 
1.2.5. Các lớp hỗ trợ chương trình theo kiểu Client-Server trong Java ..................85 
1.3. Xây dựng một ứng dụng phân tán với RMI .........................................................85 
1.3.1. Thiết kế và cài đặt các thành phần của ứng dụng..........................................85 
1.3.2. Biên dịch các tập tin nguồn và tạo Stubs và Skeleton...................................85 
1.3.3. Tạo các lớp có thể truy xuất từ mạng............................................................86 
1.3.4. Thực thi ứng dụng .........................................................................................86 
1.3.4. Ví dụ minh họa ..............................................................................................86 
1.4. Bài tập áp dụng.....................................................................................................92 
Mục lục...............................................................................................................................92 
Biên Soạn: Ngô Bá Hùng - Nguyễn Công Huy 96

File đính kèm:

  • pdfgiao_trinh_lap_trinh_truyen_thong_ngo_ba_hung.pdf