1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề cương ôn tập lập trình mạng (Phần bài tập)

25 1,4K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 276,99 KB

Nội dung

Đề cương ôn tập lập trình mạng (Phần bài tập) A. PHẦN LẬP TRÌNH VỚI SOCKET Bài 1 Viết chương trình ứng dụng mạng theo mô hình clientserver sử dụng TCP Socket.Server cho phép nhiều máy khách truy cập (client) đồng thời. Chương trình máy khách cho phép nhập vào bản ghi sinh viên gồm họ tên, mã sinh viên từ bàn phím, gửi bản ghi đến máy server và ghi vào tệp dữ liệu Data.dat trên máy từ xa. Máy từ xa nếu ghi bản ghi vào tệp thành công gửi về chuỗi “Da cap nhat”, nếu không trả về chuỗi “ Loi cap nhat ban ghi.” Và kết thúc chương trình. Yêu cầu xây dựng trong 2 trường hợp: a)Luồng nhập xuất kiểu ký tự; b)Luồng nhậpxuất kiểu byte. Bài 2 Viết chương trình ứng dụng mạng theo mô hình clientserver sử dụng TCP Socket. Client gửi 2 số đến Server, Server gửi trả lại kết quả là tổng của 2 số. Client hiển thị tổng. Server có chức năng phục vụ nhiều client một thời điểm. Chương trình phía Client: package tinhtong; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String args) throws IOException

Trang 1

Đề cương ôn tập lập trình mạng (Phần bài tập)

A PHẦN LẬP TRÌNH VỚI SOCKET

Bài 1

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng TCPSocket.Server cho phép nhiều máy khách truy cập (client) đồng thời Chương trìnhmáy khách cho phép nhập vào bản ghi sinh viên gồm họ tên, mã sinh viên từ bànphím, gửi bản ghi đến máy server và ghi vào tệp dữ liệu Data.dat trên máy từ xa Máy

từ xa nếu ghi bản ghi vào tệp thành công gửi về chuỗi “Da cap nhat”, nếu không trả về

chuỗi “ Loi cap nhat ban ghi.” Và kết thúc chương trình Yêu cầu xây dựng trong 2 trường hợp: a)Luồng nhập/ xuất kiểu ký tự; b)Luồng nhập/xuất kiểu byte

Bài 2

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng TCP Socket Client gửi 2 số đến Server, Server gửi trả lại kết quả là tổng của 2 số Client hiển thị tổng Server có chức năng phục vụ nhiều client một thời điểm

// Chương trình phía Client:

public class Client {

public static void main(String []args) throws IOException

{

Trang 2

// khoi tao 3 bien kieu String

String a,b,tong;

//tao socket de ket noi toi server

Socket ClientSocket = new Socket("Localhost", 1234);

//thong bao da ket noi thanh cong

System.out.println("Connected to server");

//tao luong nhap du lieu tu ban phim

DataInputStream inFromUser = new DataInputStream(System.in); //tao luong nhan du lieu tu server

DataInputStream inFromServer = new

DataInputStream(ClientSocket.getInputStream());

//tao luong gui du lieu len server

DataOutputStream outToServer = new

Trang 3

//in ra man hinh

System.out.println("Tong 2 chu so a va b la :"+tong); //dong luong gui du lieu len server

Trang 4

public class Server {

public static void main(String []args) throws IOException {

Trang 5

String so1,so2,so3;

int tong;

// tao server socket

ServerSocket server = new ServerSocket(1234); System.out.println("Server is now already");

//tao 1 socket do ket noi tu client toi server

Socket connectionSocket = server.accept();

//tao luong nhan du lieu tu client

DataInputStream inFromClient = new

DataInputStream(connectionSocket.getInputStream()); // tao luong gui du lieu toi client

DataOutputStream outToClient = new

DataOutputStream(connectionSocket.getOutputStream()); // truyen du lieu tu client vao 2 bien so1 va so2 so1 = inFromClient.readLine();

Trang 6

//gui so3 ve client

Trang 7

sánh với tài khoản có sẵn trong cơ sở dữ liệu SQL Server, nếu tài khoản tồn tạimáy từ xa trả về chuỗi “Dang nhap thanh cong”, ngược lại trả về chuỗi “ Tai khoankhong ton tai”.

Bài 5

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng UDPSocket Chương trình máy client có giao diện đồ họa (hình 1) cho phép nhập bảnghi sinh viên gồm họ tên, mã số sinh viên gửi tới máy từ xa Máy từ xa mở tệpData.dat kiểm tra nếu có bản ghi tìm kiếm thì trả bản ghi về cho máy khách hiểnthị, nếu không có máy từ xa trả về chuỗi “Ban ghi không ton tai.” Và kết thúcchương trình

Bài 6

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng UDPSocket Chương trình máy khách cho phép nhập vào bản ghi nhân viên gồm tênđăng nhập, mật khẩu từ bàn phím, gửi bản ghi đến máy từ xa (server), server sosánh với tài khoản có sẵn trong cơ sở dữ liệu SQL Server, nếu tài khoản tồn tạimáy từ xa trả về chuỗi “Dang nhap thanh cong”, ngược lại trả về chuỗi “ Tai khoankhong ton tai”

Bài 7

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng TCPSocket Chương trình máy khách (client) cho phép nhập vào bản ghi sinh viên gồm họtên, mã sinh viên từ bàn phím, gửi bản ghi đến máy từ xa (server) và ghi vào cơ sở dữliệu SQL Server trên máy từ xa Máy từ xa nếu ghi bản ghi vào CSDL SQL Serverthành công gửi về chuỗi “Cap nhat thanh cong”, nếu không trả về chuỗi “ Cap nhat

khong thanh cong.” Và kết thúc chương trình Yêu cầu: luồng nhập xuất kiểu ký tự.

Bài 8

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng UDPSocket Chương trình máy khách (client) cho phép nhập vào bản ghi sinh viên gồm họtên, mã sinh viên từ bàn phím, gửi bản ghi đến máy từ xa (server) và ghi vào cơ sở dữliệu SQL Server trên máy từ xa Máy từ xa nếu ghi bản ghi vào CSDL SQL Server thành

Trang 8

công gửi về chuỗi “Cap nhat thanh cong”, nếu không trả về chuỗi “ Cap nhat khong thanh

cong.” Và kết thúc chương trình Yêu cầu: luồng nhập xuất kiểu ký tự.

Bài 9

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng TCPSocket Client gửi 2 chuỗi kí tự đến Server, Server gửi trả lại chuỗi kí tự đã được inhoa Client hiển thị chuỗi in hoa.Client sẽ chạy liên tuc cho đến khi nào gửi chuỗi kí

tự “quit” đến Server thì Client sẽ dừng Server có chức năng phục vụ nhiều clientmột thời điểm

Bài 10

Viết chương trình ứng dụng mạng theo mô hình client/server sử dụng TCPsocket Chương trình client cho phép nhập một dã số nguyên từ bàn phím và gửi tớiserver, server nhận dãy số và hiển thị tên, địa chỉ IP, số hiệu cổng của client và dãy

số nhận được Sau đó thực hiện tính tổng dãy số, sắp xếp đãy số theo chiểu tang dần,hiển thị kết quả và trả kết quả về cho client Chương trình lặp lại cho đến khi gặpchuỗi “Quit” thì kết thúc

B PHẦN RMI

Bài 11

Viết chương trình đăng nhập tới máy từ xa sử dụng kỹ thuật RMI Chương trìnhmáy khách cho phép nhập tài khoản (username, pasword) như hình vẽ 2, gọi phươngthức từ xa để đăng nhập, so sánh với tài khoản có sẵn, nếu tài khoản tồn tại máy từ xatrả về chuỗi “Dang nhap thanh cong”, ngược lại trả về chuỗi “ Tai khoan khong tontai”

Trang 9

Hình 2

- 2.1 Sơ đồ lớp phía client

- Sơ đồ lớp của phía client được thiết kế theo mô hình MVC trong Hình 5.6, baogồm 3 lớp chính tương ứng với sơ đồ M-V-C như sau:

 Lớp User: là lớp tương ứng với thành phần model (M), bao gồm hai thuộc tínhusername và password, các hàm khởi tạo và các cặp getter/setter tương ứng vớicác thuộc tính

 Lớp RMILoginClientView: là lớp tương ứng với thành phần view (V), là lớpform nên phải kế thừa từ lớp JFrame của Java, nó chứa các thuộc tính là các thànhphần đồ họa bao gồm ô text nhập username, ô text nhập password, nút nhất Login

 Lớp RMILoginClientControl: là lớp tương ứng với thành phần control (C), nóchứa một lớp nội tại là LoginListener Khi nút Login trên tầng view bị click thì nó

sẽ chuyển tiếp sự kiện xuống lớp nội tại này để xử lí Tất cả các xử lí đều gọi từtrong phương thức actionPerformed của lớp nội tại này, bao gồm: lấy thông tintrên form giao diện, triệu gọi thử tục từ xa RMI về kiểm tra đăng nhập và yêu cầuform giao diện hiển thị

2.2 Sơ đồ lớp phía server

Sơ đồ lớp của phía server được thiết kế theo mô hình MVC trong Hình 5.7, baogồm 3 lớp chính tương ứng với sơ đồ M-V-C như sau:

 Lớp User: là lớp thực thể, dùng chung thống nhất với lớp phía bên client

Trang 10

 Lớp RMILoginServerView: là lớp tương ứng với thành phần view (V), làlớp dùng

 hiển thị các thông báo và trạng thái hoạt động bên server RMI

 Giao diện RMILoginInterface: là giao diện (interface) khai báo đối tượng từ

xa, trong đó nó khai báo thủ tục checkLogin(): thủ tục nhận vào một tham

số kiểu User, trả kết quả về dạng String

 Lớp RMILoginServerControl: là lớp tương ứng với thành phần control (C),

nó đảm nhiệm vai trò xử lí của server RMI, trong đó nó định nghĩa cụ thểlại phương thức đã được khai báo trong RMILoginInterface, sau đó đăng kíbản thân nó vào server RMI để phục vụ các lời triệu gọi từ phía các client

Tuần tự các bước thực hiện

Trang 11

Tuần tự các bước xử lí như sau (Hình vẽ)

1 Ở phía client, người dùng nhập username/password và click vào giao diện của lớpRMILoginClientView

2 Lớp RMILoginClientView sẽ đóng gói thông tin username/password trên formvào một đối tượng model User bằng phương thức getUser() và chuyển xuống cholớp RMILoginClientControl xử lí

3 Lớp RMILoginClientControl sẽ triệu gọi làm checkLogin() từ phía server RMI

4 Server trả về cho bên client một skeleton của phương thức checkLogin()

5 Bên phía client, khi nhận được skeleton, nó gọi phương thức checkLogin() để kểmtra thông tin đăng nhập

6 Kết quả kiểm tra sẽ được lớp RMILoginClientControl sẽ chuyển cho lớp

RMILoginClientView hiển thị bằng phương thức showMessage()

7 Lớp RMILoginClientView hiển thị kết quả đăng nhập lên cho người dùng

Cài đặt CT:

Trang 14

private JButton btnLogin;

public RMILoginClientView(){

super("RMI Login MVC");

txtUsername = new JTextField(15);

txtPassword = new JPasswordField(15);

txtPassword.setEchoChar('*');

btnLogin = new JButton("Login");

JPanel content = new JPanel();

Trang 15

public User getUser(){

User model = new User(txtUsername.getText(), txtPassword.getText());return model;

Trang 16

public class RMILoginClientControl {

private RMILoginClientView view;

private String serverHost = "localhost";

private int serverPort = 3232;

private RMILoginInterface rmiServer;

private Registry registry;

private String rmiService = "rmiLoginServer";

public RMILoginClientControl(RMILoginClientView view){this.view = view;

view.addLoginListener(new LoginListener());

try{

// lay the dang ki

registry = LocateRegistry.getRegistry(serverHost, serverPort);// tim kiem RMI server

rmiServer = (RMILoginInterface)(registry.lookup(rmiService));}catch(RemoteException e){

Trang 17

public void actionPerformed(ActionEvent e) {try {

User model = view.getUser();

if(rmiServer.checkLogin(model).equals("ok")){view.showMessage("Đăng nhập thành công!");}else{

view.showMessage("Tài khoản không tồn tại!");}

} catch (Exception ex) {

view.showMessage(ex.getStackTrace().toString());ex.printStackTrace();

public class ClientRun {

public static void main(String[] args) {

Trang 18

RMILoginClientView view = new RMILoginClientView();

RMILoginClientControl control = new RMILoginClientControl(view);view.setVisible(true);

public interface RMILoginInterface extends Remote{

public String checkLogin(User user) throws RemoteException;}

//RMILoginServerView.java

package rmi.server;

/**

*

Trang 19

import java.rmi.server.UnicastRemoteObject;import java.sql.Connection;

Trang 20

public class RMILoginServerControl extends UnicastRemoteObject implementsRMILoginInterface{

private int serverPort = 3232;

private Registry registry;

private Connection con;

private RMILoginServerView view;

private String rmiService = "rmiLoginServer";

public RMILoginServerControl(RMILoginServerView view) throwsRemoteException{

this.view = view;

getDBConnection("usermanagement", "root", "12345678");

view.showMessage("RMI server is running ");

// dang ki RMI server

Trang 21

return result;

}

private void getDBConnection(String dbName,

String username, String password){

String dbUrl = "jdbc:mysql://localhost:3306/" + dbName;

String dbClass = "com.mysql.jdbc.Driver";

private boolean checkUser(User user) {

String query = "Select * FROM users WHERE username ='"+ user.getUserName()

+ "' AND password ='" + user.getPassword() + "'";

Trang 22

public class ServerRun {

public static void main(String[] args) {

RMILoginServerView view = new RMILoginServerView();try{

Trang 23

Viết chương trình ứng dụng mạng với kỹ thuật dùng một đối tượng sản sinhnhiều đối tượng sử dụng RMI Chương trình có cấu trúc sau:

 Chương trình server có một đối tượng sản sinh ra 3 đối tượng: Mộtđối tượng cho phép trả về tổng của 2 số, một đối tượng cho phép trả

về hiệu của 2 số, một đối tượng cho phép trả về tích của 2 số

 Chương trình client gọi các phương thức từ xa để tính tổng, hiệu vàtích

Ví du: Client gửi đến: 9|32|1|2 Server sẽ gửi trả kết quả: 32|9|2|1

Bài 15

Viết chương trình ứng dụng mạng với kỹ thuật dùng một đối tượng sản sinhnhiều đối tượng sử dụng RMI Chương trình có cấu trúc sau:

Trang 24

 Chương trình server có một đối tượng sản sinh ra 2 đối tượng: Mộtđối tượng cho phép trả về thời gian và nhiệt độ, đối tượng kia chophép trả về thời gian và độ ẩm (giá trị nhiệt độ và độ ẩm dùng biểuthức 100*Math.random() để phát sinh ngẫu nhiên giả phỏng).

 Chương trình client gọi các phương thức từ xa để lấy nhiệt độ, độ ẩm

Viết chương trình thu thập và tra cứu thời tiết gồm nhiệt độ, độ ẩm, áp xuất, hướng

và tốc độ gió Chương trình có cấu trúc sau:

- Phần 1: Phần thu thập dữ liệu thời tiết sử dụng kỹ thuật RMI Chương trìnhclient quét qua tất cả các máy trạm ( server) bằng cách gọi phương thức từ xa

và cất kết quả xuống cơ sở dữ liệu SQL ( dữz liệu giả phỏng bằng cách gọihàm phát sinh ngẫu nhiên)

- Phần II: Phần tra cứu thời tiết sử dụng TCP Socket với chương trình servercho phép đáp ứng nhiều kết nối đồng thời Chương trình client cho phép nhậpvào mã vùng cần tra cứu thời tiết gửi tới server, server truy xuất cơ sở dữ liệu

có từ phần 1 và trả về client bản ghi thời tiết tương ứng

Ngày đăng: 04/07/2017, 23:02

TỪ KHÓA LIÊN QUAN

w