Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Lab lap trinhmang_v3
1. TRƯỜNG ĐẠI HỌC HỒNG ĐỨC
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI THỰC HÀNH
HỌC PHẦN: LẬP TRÌNH MẠNG
SỐ TÍN CHỈ: 3
DÙNG CHO: SINH VIÊN NGÀNH CNTT
THANH HÓA, 2/2022
2. 1
HƯỚNG DẪN CHUNG
I. CHÍNH SÁCH CỦA MÔN HỌC
Sinh viên "bắt buộc" phải in bài thực hành và mang theo khi đến buổi thực hành. Không chấp
nhận cho sinh viên vào lớp nếu không có bài thực hành. Sinh viên vắng 1 (một) buổi thực hành
sẽ bị đánh vắng tương đương 05 (năm) tiết học.
Sinh viên phải mang thêm bài giảng lý thuyết, tài liệu tham khảo của học phần.
Tổng số buổi thực hành của học phần là 08 buổi, tương đương 40 tiết.
II. PHẦN MỀM PHỤC VỤ
Các bài tập thực hành trong học phần này được xây dựng thực hành với ngôn ngữ Java trên bộ
công cụ NetBeans IDE 8.2
Yêu cầu phần cứng, phần mềm liên quan khi cài đặt:
Để cài đặt Netbeans IDE hệ thống cần những yêu cầu sau:
Hệ điều hành: Windows 7 (32 bit hoặc 64 bit), Ubuntu 10 trở lên, Mac OS 10.7 trở lên.
CPU: Pentium IV trở lên
Ram: Ít nhất 1GB.
Ổ đĩa trống: Ít nhất 1GB.
Địa chỉ để tải phần mềm java JDK with netbean
https://drive.google.com/file/d/1LxWJ3HglzB9r9mEke3ulC1OEGCbXqr69/view?usp=sharing
Hướng dẫn cài đặt tham khảo:
https://www.oracle.com/technetwork/jdk-7-netbeans-install-433844.html
III. TÀI LIỆU THAM KHẢO
[1] Hồ Mạng Đào, Bài giảng trình lập trình mạng – Tháng 7 năm 2010
[2] David Reilly, Michael Reilly, Java Network Programming, Publisher: March 25, 2002
[3] https://www.javatpoint.com/socket-programming
[4] https://www.javatpoint.com/java-networking
[5] https://www.tutorialspoint.com/java/java_networking.htm
[6] https://docs.oracle.com/javase/tutorial/networking/sockets/
3. 2
IV. HƯỚNG DẪN SỬ DỤNG BỘ CÔNG CỤ NETBEAN
1. Khởi động chương trình:
Start/All Programs/NetBeans/NetBeans IDE 8.2
Hoặc chọn biểu tượng NetBeans IDE 8.2 trên màn hình:
2. Giao diện chương trình:
Một số chức năng chính (thường dùng):
4. 3
Sau khi tiến hành cài đặt chương trình như các chương trình thông thường khác. Khởi động chương
trình tạo Project mới như sau:
Bước 1: Mở Netbeans sau đó chọn File -> New Project (hoặc bấm tổ hợp phím ctrl + shift + N)
Tạo project
mới
Project đã tạo
Các lớp đã tạo
Menu các phương
thức, hàm của 1 lớp
Các lệnh chương
trình chính
Biên dịch và chạy chương trình
(bấm shift + F6 để chạy 1 class )
5. 4
Bước 2: Chọn Java Application
Bước 3: Điền tên Project Name và chọn đường dẫn lưu ứng dụng. Lưu ý là tên class main phải trùng
với tên class chúng ta khai báo trong mã nguồn.
Bước 4: Chèn đoạn mã HelloWorldApp vào Class
6. 5
Bước 5: Thực thi ứng dụng bằng cách ấn Shift+F6. Nếu xuất hiện thông báo màu xanh Build Sucess
là bạn đã thành công.
Lưu ý: một số phím tắt thường dùng trong Netbean:
Một số phím tắt thường dùng trong NetbeanIDE:
Tìm kiếm và thay thế:
7. 6
Ctrl-F3: tìm từ tại vị trí con trỏ chuột
F3/Shift-F3: tìm từ kế tiếp/trước đó trong file
Ctrl-F/H: tìm/thay thế từ trong file
Alt-F7: tìm vị trí hàm được sử dụng trong projects
Ctrl-R: đổi tên biến tại con trỏ chuột
Alt-Shift-L: copy đường dẫn của file đang mở
Coding trong Java
Alt-Insert: sinh ra code
Ctrl-Shift-I: tự động imports class cần thiết
Alt-Shift-F: định dạng code
Ctrl-Shift-Up/D: copy dòng tại con trỏ chuột
Ctrl-/: bật tắt comment
Ctrl-E/X: xóa dòng tại con trỏ chuột
Biên dịch, kiểm tra và chạy project
F9: biên dịch package/file
F11: build project chính
Shift-F11: xóa và build project chính
Shift-F6: chạy file hiện tại
F6: chạy project
Debugging
Ctrl-F5: bắt đầu debugging project chính
Ctrl-Shift-F5: bắt đầu debugging file hiện tại
Ctrl-Shift-F6: bắt đầu debugging file
Ctrl-Shift-F8: đặt breakpoint mới
Sơ lược:
TT CÁC TẦNG OSI HỌ GIAO THỨC TCP TCP/IP STACK
7 Tầng ứng dụng Tầng ứng dụng
HTTP
FTP
SMTP
RIP
DNS
6 Tầng trình diễn
5 Tần phiên
4 Tầng giao vận Tầng giao vận TCP UDP
3 Tầng mạng Tầng internet ICMP, IP, IGMP
2 Tầng liên kết dữ liệu
Tầng mạng Ethernet, ATM, Frame Relay …
1 Tầng vật lý
8. 7
BÀI THỰC HÀNH SỐ 1
(5 tiết)
I. Mục tiêu (lập trình thao tác với địa chỉ máy trạm)
- Nắm vững hoạt động của các phương thức trong các lớp: Lớp URL, Lớp URLConnection:
II. Nội dung
- Xây dựng các chương trình hoạt động phía client sử dụng các phương thức trong lớp
InetAddress, Lớp URL, Lớp URLConnection, Socket, ServerSocket, …
- Một số phương thức thường dùng các lớp:
- URL:
public String getPath() : trả về path của URL đó
public String getQuery() : trả về phần query của URL đó
public String getAuthority() : trả về authority của URL đó
public int getPort() : trả về port của URL đó
public int getDefaultPort() : trả về port mặc định cho protocol của URL đó
public String getProtocol() : trả về protocol của URL đó
public String getHost() : trả về host của URL đó
public String getFile() : trả về filename của URL đó
public String getRef() : trả về phần reference của URL đó
public URLConnection openConnection() : mở một kết nối tới URL, cho phép một client giao
tiếp với tài nguyên.
- URLConnection:
Object getContent() : lấy nội dung của URL connection này
Object getContent(Class[] classes) : lấy nội dung của URL connection này
String getContentEncoding() : trả về giá trị của trường content-encoding header
int getContentLength() : trả về giá trị của trường content-length header
String getContentType() : trả về giá trị của trường content-type header
int getLastModified() : trả về giá trị của trường last-modified header
long getExpiration() : trả về giá trị của trường expires header
public URL getURL() : trả về URL mà đối tượng URLConnection này được kết nối tới.
- Lớp InetAddress
public static InetAddress getLocalHost (): nó trả về thể hiện của InetAdddress chứa tên và
địa chỉ localhost.
public static InetAddress getByName(String hostname): nó trả về thể hiện của InetAddress
có chứa LocalHost IP và tên.
public static InetAddress[ ] getAllByName (String hostname) : nó trả về danh sách
các InetAddress có chứa LocalHost IP và tên.
9. 8
Bài thực hành có hướng dẫn:
Bài 1:
Viết chương trình hiển thị ra địa chỉ có máy chủ có tên miền là "hdu.edu.vn"
Thực hiện:
B1: Khai báo tên miền
B2: Hiển thị địa chỉ của tên miền thông qua phương thức getHostAddress của lớp InetAddress
Bài 2:
Viết chương trình hiển thị ra địa chỉ của máy chủ có tên miền được nhập vào từ bàn phím
Bài 3:
Viết chương trình lấy thông tin (protocol, host, path, port ….) của URL sau:
"http://giangvien.hdu.edu.vn/login.html"
10. 9
Bài 4
Viết chương trình lấy thông tin (protocol, host, path, port ….) của URL được nhập và từ bàn phím.
(Thực hiện tương tự bài 3)
Bài 5:
Viết chương trình nhập một URL từ bàn phím, kết nối với Internet và hiển thị mã nguồn của trang Web
đó lên màn hình;
Bài 6:
Viết chương trình tải về một trang web thông qua một URL.
11. 10
Bài 7:
Viết chương trình để kiểm tra trên 1024 cổng đầu tiên của máy đang dùng có những cổng nào đang
hoạt động
Bài 8:
Viết chương trình nhập và tên miền của 1 máy chủ (hostname) xuất ra địa chỉ IP tương ứng của máy
trạm đó, cho biết địa chỉ IP đó thuộc lớp nào).
12. 11
B1: Khai báo tên địa chỉ
B2: Hiển thị địa chỉ của tên miền thông qua phương thức getHostAddress của lớp InetAddress
B3: Xác định lớp của địa chỉ tên miền và hiển thị ra
Thực hành tự luyện tập:
Làm lại các bài tập phần A bằng cách chia thành các lớp và các phương thức nhỏ.
13. 12
BÀI THỰC HÀNH SỐ 2
Truyền thông client - server theo giao thức TCP
(10 tiết)
I. Mục tiêu của bài học
Hiểu rõ và nắm vững kiến thức, ưu điểm và nhược điểm cơ chế truyền thông sử dụng giao thức
TCP xây dựng các chương trình phía client, phía server, đọc/ ghi dữ liệu qua luồng I/O);
Nắm vững hoạt động của các phương thức trong các lớp InetAddress, Lớp Socket, Lớp
ServerSocket, …khi hoạt động với giao thức TCP
II. Nội dung
Bài thực hành có hướng dẫn:
Xây dựng ứng dụng Client-Server với giao thức TCP bằng Java
Các bước để cài đặt chương trình Server bằng Java
Bước 1: Tạo một đối tượng ServerSocket: ServerSocket ss=new ServerSocket(port)
Bước 2: Tạo một đối tượng Socket bằng cách chấp nhận liên kết từ yêu cầu liên kết của client. Sau
khi chấp nhận liên kết, phương thức accept() trả về đối tượng Socket thể hiện liên kết giữa Client và
Server.
Bước 3: Tạo một luồng nhập để đọc dữ liệu từ client
Bước 4: Tạo một luồng xuất để gửi dữ liệu trở lại cho server
Bước 5: Thực hiện các thao tác vào ra với các luồng nhập và luồng xuất
Bước 6: Đóng socket s khi đã truyền tin xong. Việc đóng socket cũng đồng nghĩa với việc đóng các
luồng.
Các bước cài đặt chương trình phía Client bằng Java
Bước 1: Tạo một đối tượng Socket: Socket client =new Socket("hostname",portName);
Bước 2: Tạo một luồng xuất để có thể sử dụng để gửi thông tin tới Socket
Bước 3: Tạo một luồng nhập để đọc thông tin đáp ứng từ server
Bước 4: Thực hiện các thao tác vào/ra với các luồng nhập và luồng xuất
Bước 5: Đóng socket khi hoàn thành quá trình truyền tin
Bài 1:
Viết 2 chương trình độc lập theo mô hình Client/Server sử dụng giao thức TCP/IP thực hiện yêu cầu:
phía client gửi server một chuỗi ký tự: "Chao Server"
phía server hiển thị dữ liệu đã nhận được từ client.
(Tham khảo code mẫu)
Hàm main phía client
14. 13
Hàm main phía server
Bài 2:
Viết 2 chương trình độc lập theo mô hình Client/Server sử dụng giao thức TCP/IP, thực hiện yêu cầu:
phía client cho phép nhập vào một chuỗi ký tự từ bàn phím và gửi dữ liệu cho server
phía server hiển thị dữ liệu đã nhận được và gửi phản hồi "Đã nhận được dữ liệu" cho client .
(Tham khảo code mẫu)
Phía Client:
16. 15
Bài 3:
Viết chương trình client/ Server cho phép người dùng nhập vào chuỗi ký tự từ bàn phím phía client gửi
đến server, Server thực hiện xử lý:
- Chuyển toàn bộ chuỗi nhận được thành chữ hoa
- Chuyển toàn bộ chuỗi nhận được thành chữ thường
- Đếm tổng số từ của chuỗi nhận được
Sau khi xử lý xong gửi kết quả về phía Client
Phía client
18. 17
Bài 4:
Viết chương trình client/ Server cho phép người dùng nhập vào 2 số thực và một phép toán (+, -, *, /)
rồi gửi đến chương trình Server. Chương trình Server thực hiện tính toán kết quả dựa vào phép toán
tương ứng và trả kết quả cho chương trình Client.
Hàm main phía client:
Hàm main phía server:
21. 20
Bài 5:
Viết chương trình Client – Server sử dụng giao thức TCP thực hiện y/c sau:
Client: gửi y/c hỏi ngày tháng năm hiện tại lên Server.
Server: gửi trả lời cho Client.
Phía client
Phía Server
23. 22
Bài 6.
Server phục vụ tuần tự Server phục vụ song song
Code mẫu:
Chương trình Client ở chế độ có nối kết
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class EchoChatClient {
public final static String SERVER_IP = "127.0.0.1";
public final static int SERVER_PORT = 7;
public static void main(String[] args) throws IOException, InterruptedException {
Socket socket = null;
try {
socket = new Socket(SERVER_IP, SERVER_PORT); // Kết nối đến server
System.out.println("Connected: " + socket); // Hiển thị thông tin kết nối
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
for (int i = '0'; i <= '9'; i++) {
os.write(i); // Send each number to the server
int ch = is.read(); // Chờ phản hồi từ phía server
System.out.print((char) ch + " "); // Hiển thị kết quả phản hồi từ máy chủ
Thread.sleep(200);
}
}
catch (IOException ie)
{
System.out.println("Can't connect to server");
}
finally {
if (socket != null)
{
socket.close();
}
}
}
}
Chương trình phía server phục vụ tuần tự
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoChatSingleServer {
public final static int SERVER_PORT = 7;
24. 23
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
try
{
System.out.println("Binding to port " + SERVER_PORT + ", please wait ...");
serverSocket = new ServerSocket(SERVER_PORT);
System.out.println("Server started: " + serverSocket);
System.out.println("Chờ thông tin từ Client gửi đến ...");
while (true) {
try {
Socket socket = serverSocket.accept();
System.out.println("Client accepted: " + socket);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
int ch = 0;
while (true) {
ch = is.read(); // Nhận dữ liệu từ Client
if (ch == -1) {break;}
os.write(ch); // Gửi thông tin trả lời đến client
}
socket.close();
}
catch (IOException e)
{
System.err.println(" Connection Error: " + e);
}
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
if (serverSocket != null) {
serverSocket.close();
}
}
}
}
Chương trình Server phục vụ song song
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class EchoChatMultiServer {
public static final int NUM_OF_THREAD = 4;
public final static int SERVER_PORT = 7;
public static void main(String[] args) throws IOException {
ExecutorService executor = Executors.newFixedThreadPool(NUM_OF_THREAD);
ServerSocket serverSocket = null;
try {
System.out.println("Ràng buộc với cổng" + SERVER_PORT + ", please wait ...");
serverSocket = new ServerSocket(SERVER_PORT);
System.out.println("Server started: " + serverSocket);
System.out.println("Chờ thông tin từ Client ...");
while (true) {
try {
Socket socket = serverSocket.accept();
System.out.println("Client accepted: " + socket);
WorkerThread handler = new WorkerThread(socket);
executor.execute(handler);
} catch (IOException e) {
System.err.println(" Connection Error: " + e);
26. 25
Bài 8:
Viết 2 chương trình độc lập theo mô hình Client/Server sử dụng giao thức TCP/IP thực hiện các nội dung
sau:
- Phía client kết nối đến server và gửi 1 file hình ảnh hoặc 1 file text đến Server, khi nhận được
server sẽ thông báo đến client đã nhận được
- Phía server có thể gửi 1 file text đến nhiều Client đang kết nối đến server.
Phía Client:
27. 26
Phía Server:
Bài tập luyện tập:
Viết chương trình bằng Java với client và Server sử dụng Socket thực hiện các yêu cầu sau với giao thức
TCP trong đó Client nhập số liệu; server thực hiện tính toán sau đó trả kết quả về Client.
28. 27
1. Tính tổng: S = a + b với a và b là 2 số nhập vào từ bàn phím
2. Tính tổng: S = a3
+ b3
3. Tính tổng: 1 + 3 + 5 +7 +…+ (2n + 1) với n là số nhập vào từ bàn phím
4. Tính tổng: S = 1*2 + 2*3 + 4*4 +…+ n* (n+1) với n là số nhập vào từ bàn phím
5. Tính UCLN, BCNN nhỏ nhất của 2 số a và b nhập vào từ bàn phím.
6. Hiển thị ra màn hình ở phía client ngày giờ hiện tại.
7. Tính tổng và tìm Min, Max của 3 số bất kỳ nhập vào từ bàn phím
8. Xuất ra dãy số nguyên tố trước số n.
29. 28
BÀI THỰC HÀNH SỐ 3
Truyền thông client - server theo giao thức UDP
(10 tiết)
I. Mục tiêu
- Hiểu rõ và nắm vững kiến thức, biết được ưu và nhược điểm của cơ chế truyền thông với giao
thức UDP của (các chương trình phía client, phía server)
- Nắm vững hoạt động của các phương thức trong các lớp:
o DatagramPacket.
o DatagramSocket.
- Biết cách gửi/ nhận dữ liệu multicast, broadcasting
II. Nội dung
Bài thực hành có hướng dẫn:
Các bước để cài đặt chương trình Server bằng Java
Bước 1: Khai báo khởi tạo server: DatagramSocket socket = new DatagramSocket(port);
Bước 2: Tạo một đối tượng để đọc và gửi dữ liệu: DatagramPacket dp = null;
Bước 3: Đọc yêu cầu từ client gửi đến
Bước 4: Thao tác xử lý yêu cầu (nên viết hàm riêng)
Bước 5: Gửi kết quả đã xử lý đến client
Bước 6: Đóng socket khi đã truyền tin xong (Việc đóng socket cũng đồng nghĩa với việc đóng các luồng)
Các bước cài đặt chương trình phía Client bằng Java
Bước 1: Khai báo khởi tạo client DatagramSocket socket = new DatagramSocket();
Bước 2: Tạo một đối tượng để đọc và gửi dữ liệu: DatagramPacket dp = null;
Bước 3: Thao tác xử lý yêu cầu gửi (nên viết hàm riêng).
Bước 4: Gửi yêu cầu đã xử lý đến server.
Bước 5: Đọc và hiển thị kết quả từ server trả về
Bước 6: Đóng socket khi hoàn thành quá trình truyền tin
Bài 1:
Viết chương trình theo mô hình Client/Server sử dụng giao thức UDP để:
Phía Client gửi một xâu ký tự "Xin chào server" đến server
Phía Server nhận xâu ký tự do client gửi đến và hiển thị ra màn
Hàm main phía client:
30. 29
Hàm main phía Server:
Bài 2:
Viết chương trình theo mô hình Client/Server sử dụng giao thức UDP thực hiện các yêu cầu:
Client gửi một xâu ký tự do người dùng nhập từ bàn phím cho server, chờ nhận thông tin phản
hồi trở lại từ Server và hiển thị thông tin đó trên màn hình
Server nhận xâu ký tự do client gửi tới và in lên màn hình, gửi phản hồi đến máy client "Đã nhận
được thông tin"
Chương trình demo phía Client:
31. 30
Chương trình phía Server
Bài 3:
Viết chương trình client/ Server sử dụng giao thức UDP cho phép người dùng nhập vào 2 số thực và một
phép toán (+, -, *, /) rồi gửi đến chương trình Server. Chương trình Server thực hiện tính toán kết quả
dựa vào phép toán tương ứng và trả kết quả cho chương trình Client.
Chương trình phía server
Hàm main
32. 31
Hàm xử lý yêu cầu phía server:
Chương trình phía Client:
Hàm xử lý dữ liệu đầu vào
33. 32
Hàm main phía client:
Bài 4:
Xây dựng chương trình chatroom sử dụng mạng theo giao thức UDP để kết nối các máy clien cùng chát
với nhau thông qua server; máy Server nhận tin từ bất kỳ máy client nào sẽ chuyển tin nhận được cho
tất cả các máy còn lại. (Khó)
Bài 5
Viết 2 chương trình độc lập theo mô hình Client/Server sử dụng giao thức UDP thực hiện các nôi dung
sau:
- Phía client kết nối đến server và gửi 1 file hình ảnh hoặc 1 file text đến Server, khi nhận được
server sẽ thông báo đến client đã nhận được
- Phía server có thể gửi 1 file text đến nhiều Client đang kết nối đến server.
- Gửi dữ liệu theo từng đoạn 512 byte; Viết chương trình Socket lắng nghe các gói tin đến trên cổng
2000 (tự luyện tập)
Bài 6:
Xây dựng chương trình sử dụng MulticastSocket để truyền và nhận tin từ Group đơn giản:
34. 33
Chức năng chương trình:
Tham gia vào group của multicast
Gửi dữ liệu đến địa chỉ multicast
Nhận dữ liệu từ multicast
Hiển thị lên màn hình
Chỉ cần các client tham gia vào group của địa chỉ multicast này thì khi có dữ liệu được gửi vào đó
thì tất cả client đều nhận được
Cơ chế:
Tham gia vào group của địa chỉ multicast gửi dữ liệu đến địa chỉ multicast (Lúc này các client muốn
nhận được thì phải tham gia vào group của multicast đó thì mới nhận được)
Vì trong chương trình cũng tham gia vào group multicast nên nó cũng sẽ nhận được dữ liệu khi có
client gửi vào địa chỉ này
Tham khảo Code mẫu:
Client Receiver
35. 34
Server send:
Bài 7
Xây dựng chương trình sử dụng broadcast thực hiện các nội dung:
Server gửi dữ liệu đến địa chỉ multicast để nhiều client có thể nhận được
Các client hiển thị các thông tin nhận được từ server
Cơ chế:
Server đọc từng dòng dữ liệu từ file "one-liners.txt"
Với mỗi dòng dữ liệu, gửi nó đến địa chỉ multicast là 230.0.0.1, mỗi lần gửi server tạm dừng vài
giây (là bội số của 5)
Tất cả các client tham gia vào multicast ở trên sẽ nhận được dữ liệu từ server gửi đến (bình
thường nếu theo cơ chế TCP sẽ làm khó hơn)
Client hiển thị nó lên màn hình của mình, trong chương trình được thiết kế chỉ nhận 5 dòng
Bài tập luyện tập:
Lập trình ứng dụng mạng sử dụng giao thức UDP thực hiện các y/c phần bài tập luyện tập trong
buổi 2.
36. 35
BÀI THỰC HÀNH SỐ 4
Lập trình ứng dụng sử dụng các giao thức dịch vụ mạng (Telnet)
(5 tiết)
I. Mục tiêu
- Biết cách bật tắt Telnet trong một số hệ điều hành: Window7, window10 …
- Nắm vững các kiến thức của dịch vụ telnet, Các giao thức FTP, SMTP/POP3
II. Nội dung
- Xây dựng chương trình sử dụng dịch vụ Telnet Client với Java
- Xây dựng chương trình sử dụng dịch vụ truyền tệp FTP
- Xây dựng chương trình trao đổi email với giao thức SMTP/POP3
Bài thực hành:
(Tham khảo chương 4 của tài liệu [1], chương 6 của tài liệu [2])
Bài 1:
Kiểm tra máy chủ bằng telnet
Bài 2:
Sử dụng lệnh telnet để kiểm tra dịch vụ ftp có mở trên máy chủ 172.29.3.253 không?
Bài 3:
Viết ứng dụng FTP dạng client-server (sử dụng giao thức TCP) truyền file đơn giản
Hướng dẫn: Máy Client (Tạo project) chứa Chương trình Client và máy Server (tạo Project) chứa chương
trình phía Server
37. 36
Xây dựng chương trình phía Server: (Demo trên localhost)
Xây dựng chương trình phía Client: (Demo trên localhost)
Bài 4:
Viết ứng dụng Telnet dạng client-server (sử dụng giao thức TCP)
Bài 5:
Viết ứng dụng ping dạng client-server (sử dụng giao thức TCP)
38. 37
Bài 6:
Viết ứng dụng MAIL dạng client-server, (sử dụng giao thức TCP)
Bài 7:
Giả sử FTPServer nằm trên máy cục bộ và sử dụng số cổng mặc định 2018. Xây phương thức để thực
hiện gửi các lệnh của FTP tới FTPServer (Đọc, ghi dữ liệu, upload, Download dữ liệu).
Bài 8:
Xây dựng chương trình gửi thư với SMTP (tạo đối tượng socket và kết nối tới mail server, khai báo luồng
xuất, nhập cho socket, Thực hiện lần lượt gửi các lện và tham số của SMTP tới mail server theo trật tự:
Hello, Mail From, RCPT to, DaTa, Quit.
39. 38
BÀI THỰC HÀNH SỐ 5
Xây dựng chương trình phân tán RMI
(10 tiết)
I. Mục tiêu
Nắm vững các kiến thức, kỹ năng về phân tán, cơ chế truyền thông của RMI.
Nắm vững các bước xây dựng một ứng dụng phân tán bằng cơ chế RMI: (Thiết kế và cài đặt các
thành phần của ứng dụng)
Tạo các lớp có thể truy xuất từ mạng cần thiết. Khởi tạo ứng dụng)
Hiểu rõ các lớp hỗ trợ lập trình với RMI trong Java.
II. Nội dung
- Xây dựng các chương trình sử dụng phân tán dữ liệu (RMI)
Kiến trúc một chương trình RMI được mô tả như hình dưới:
Hướng dẫn Xây dựng ứng dụng phân tán với RMI
Bước 0. Tạo 3 project chứa interFace, Server, Client;
Bước 1. Tạo lớp (interface) khai báo các phương thức được gọi từ xa của đối tượng.
Bước 2. Tạo lớp cài đặt (implements) cho giao diện đã được khai báo ở phía server.
Bước 3. Viết chương trình Server.
Bước 4. Viết chương trình Client.
Bước 5. Thực hiện chương trình Server, chương trình Client.
Bài thực hành: (Tham khảo chương 5 của tài liệu [1], chương 11 của tài liệu [2])
Bài 1:
Sử dụng bộ công cụ NetBean viết chương trình theo cơ chế RMI trong đó Client sẽ gọi phương thức
HelloWorld() được cài đặt ở phía server thực hiện xuất ra dòng chữ "Hello World" tại client
40. 39
Tạo remote o
Hướng dẫn: (chương trình Demo) Khởi động Netbean tạo 3 project như sau:
Bước 1: Tạo interface khai báo phương thức từ xa
Sau đó vào file MyRemote tạo code
1 2 3
Đặt tên: MyRemote
41. 40
Add lớp kết nối đến Client và Server: Phía Server (Tương tự với client):
Bước 2: Tạo lớp cài đặt cho interface khai báo ở trên
1
2
3
1
2
4
3
42. 41
Bước 3: Chương trình Server, tạo đối tượng cho phép gọi hàm từ xa.
1 2
3
4
5
43. 42
Bước 4: Chương trình Client, tạo đối tượng tham chiếu đến đối tượng từ xa, gọi hàm từ xa trên đối tượng
đó.
Bước 5. Thực hiện chương trình Server và chương trình Client
1
2
3
4
44. 43
Bài 2:
Viết chương tình RMI trong đó Client sẽ gọi 1 phương thức tongHaiSo(int a, int b) được cài đặt ở phía
server thực hiện tính tổng 2 số ngyên a và b.
Bài 3:
Viết chương trình RMI trong đó Client sẽ gọi phương thức GiaiPTBac2(int a, int b, int c) được cài đặt ở
phía server thực hiện giải phương trình bậc 2 ax2
+ bx + c = 0
Bài 4:
Viết chương trình RMI trong đó Client sẽ gọi phương thức TongCacSoNT(int n) được cài đặt ở server thực
hiện việc tính tổng các số nguyên tố nhỏ hơn n được nhập từ bàn phím ở máy client
Bài 5:
Viết chương trình RMI trong đó Client sẽ gọi phương thức tinhChuViTamGiac(int a, int b, int c) được cài
đặt ở phía server thực hiện việc tính chu vi tam giác nếu a. b, c thỏa mãn là 3 cạnh của 1 tam giác
Bài tập luyện tập:
Xây dựng các bài thực hành ở phần bài 2 và bài 3 theo cơ chế RMI