SlideShare a Scribd company logo
1 of 44
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
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/
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):
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 )
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
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ế:
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ý
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.
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"
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.
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).
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ỏ.
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
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:
14
Phía Server:
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
16
Phía server
Các hàm xử lý bài toán phía server:
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:
18
Hàm xử lý bài toán phía server:
19
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
21
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;
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);
24
}
}
}
catch (IOException e1)
{
e1.printStackTrace();
}
finally
{
if (serverSocket != null)
{
serverSocket.close();
}
}
}
}
Bài 7:
Xây dựng chương trình chatroom sử dụng giao thức TCP Socket theo mô hình Client-Server:
Phía Client:
Phía Server
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:
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.
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.
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:
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:
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
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
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:
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
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.
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
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)
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.
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
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
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
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
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
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

More Related Content

What's hot

Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
. .
 
3.1. thiết kế mạng cục bộ
3.1. thiết kế mạng cục bộ3.1. thiết kế mạng cục bộ
3.1. thiết kế mạng cục bộ
Kun Din
 

What's hot (20)

Bài tập HTML/CSS
Bài tập HTML/CSSBài tập HTML/CSS
Bài tập HTML/CSS
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Bài giảng sql server 2008
Bài giảng sql server 2008Bài giảng sql server 2008
Bài giảng sql server 2008
 
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đĐề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
Đề tài: Phần mềm Quản Lý Siêu Thị Mini, HAY, 9đ
 
Uml hà
Uml hàUml hà
Uml hà
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
Giáo trình bảo mật thông tin
Giáo trình bảo mật thông tinGiáo trình bảo mật thông tin
Giáo trình bảo mật thông tin
 
Xây dựng hệ thống mạng cho Công Ty Cổ Phần Trường Tân trên nền tảng server 2008
Xây dựng hệ thống mạng cho Công Ty Cổ Phần Trường Tân trên nền tảng server 2008Xây dựng hệ thống mạng cho Công Ty Cổ Phần Trường Tân trên nền tảng server 2008
Xây dựng hệ thống mạng cho Công Ty Cổ Phần Trường Tân trên nền tảng server 2008
 
Bai giang photoshop
Bai giang photoshopBai giang photoshop
Bai giang photoshop
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
 
3.1. thiết kế mạng cục bộ
3.1. thiết kế mạng cục bộ3.1. thiết kế mạng cục bộ
3.1. thiết kế mạng cục bộ
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
đề Tài website bán hàng quần áo ở cửa hàng juri luận văn, đồ án, đề tài tốt n...
đề Tài website bán hàng quần áo ở cửa hàng juri luận văn, đồ án, đề tài tốt n...đề Tài website bán hàng quần áo ở cửa hàng juri luận văn, đồ án, đề tài tốt n...
đề Tài website bán hàng quần áo ở cửa hàng juri luận văn, đồ án, đề tài tốt n...
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
 
Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
 
Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAYĐề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
Đề tài: Thiết kế và thi công mô hình điều khiển thiết bị điện, HAY
 

Similar to Lab lap trinhmang_v3 (20)

Bai 4 lap trình phia client
Bai 4  lap trình phia clientBai 4  lap trình phia client
Bai 4 lap trình phia client
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04
 
Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1
 
Lập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất NghệLập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất Nghệ
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
 
ChatMessenger
ChatMessengerChatMessenger
ChatMessenger
 
De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
C# cơ bản hay
C# cơ bản hayC# cơ bản hay
C# cơ bản hay
 
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
 
Asp
AspAsp
Asp
 
Phan 1 sv
Phan 1   svPhan 1   sv
Phan 1 sv
 

Recently uploaded

Recently uploaded (20)

XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
XÂY DỰNG KẾ HOẠCH KINH DOANH CHO CÔNG TY KHÁCH SẠN SÀI GÒN CENTER ĐẾN NĂM 2025
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
NHKTS SLIDE B2 KHAI NIEM FINTECH VA YEU TO CUNG CAU DOI MOI TRONG CN_GV HANG ...
 
Nhân vật người mang lốt cóc trong truyện cổ tích thần kỳ Việt Nam
Nhân vật người mang lốt cóc trong truyện cổ tích thần kỳ Việt NamNhân vật người mang lốt cóc trong truyện cổ tích thần kỳ Việt Nam
Nhân vật người mang lốt cóc trong truyện cổ tích thần kỳ Việt Nam
 
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
 
Luận văn 2024 Thực trạng và giải pháp nâng cao hiệu quả công tác quản lý hành...
Luận văn 2024 Thực trạng và giải pháp nâng cao hiệu quả công tác quản lý hành...Luận văn 2024 Thực trạng và giải pháp nâng cao hiệu quả công tác quản lý hành...
Luận văn 2024 Thực trạng và giải pháp nâng cao hiệu quả công tác quản lý hành...
 
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
 
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
Báo cáo tốt nghiệp Đánh giá thực trạng an toàn vệ sinh lao động và rủi ro lao...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viênKỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
Kỹ năng khởi nghiệp Đổi mới sáng tạo cho sinh viên
 
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 1-20) ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 1-20) ...40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 1-20) ...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 1-20) ...
 
Luận văn 2024 Tạo động lực lao động tại Trung tâm nghiên cứu gia cầm Thụy Phương
Luận văn 2024 Tạo động lực lao động tại Trung tâm nghiên cứu gia cầm Thụy PhươngLuận văn 2024 Tạo động lực lao động tại Trung tâm nghiên cứu gia cầm Thụy Phương
Luận văn 2024 Tạo động lực lao động tại Trung tâm nghiên cứu gia cầm Thụy Phương
 
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
 
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
MỘT SỐ GIẢI PHÁP GÓP PHẦN BẢO TỒN VÀ PHÁT HUY CA TRÙ (CỔ ĐẠM – NGHI XUÂN, HÀ ...
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
 
Báo cáo tốt nghiệp Đánh giá rủi ro môi trường từ ô nhiễm hữu cơ nước thải các...
Báo cáo tốt nghiệp Đánh giá rủi ro môi trường từ ô nhiễm hữu cơ nước thải các...Báo cáo tốt nghiệp Đánh giá rủi ro môi trường từ ô nhiễm hữu cơ nước thải các...
Báo cáo tốt nghiệp Đánh giá rủi ro môi trường từ ô nhiễm hữu cơ nước thải các...
 
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
 
Bài giảng chương 8: Phương trình vi phân cấp một và cấp hai
Bài giảng chương 8: Phương trình vi phân cấp một và cấp haiBài giảng chương 8: Phương trình vi phân cấp một và cấp hai
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
  • 17. 16 Phía server Các hàm xử lý bài toán phía server:
  • 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:
  • 19. 18 Hàm xử lý bài toán phía server:
  • 20. 19
  • 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
  • 22. 21
  • 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);
  • 25. 24 } } } catch (IOException e1) { e1.printStackTrace(); } finally { if (serverSocket != null) { serverSocket.close(); } } } } Bài 7: Xây dựng chương trình chatroom sử dụng giao thức TCP Socket theo mô hình Client-Server: Phía Client: Phía Server
  • 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