BÁO CÁO THỰC HÀNH LẬP TRÌNH MẠNG

39 231 1
BÁO CÁO THỰC HÀNH LẬP TRÌNH MẠNG

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC HÀNH LẬP TRÌNH MẠNG LỜI CẢM ƠN Lập trình mạng kiến thức chuyên ngành quan trọng lĩnh vực công nghệ thông tin, đặc biệt ngành quản trị mạng Có thể xem hướng rộng mở cho sinh viên việc nắm bắt kĩ thuật cần thiết quan trọng Sau loạt mơn học lí thuyết tảng Mạng máy tính, Lập trình Java, Lập trình mạng, học phần Thực hành Lập trình mạng hội tụ thực kiến thức học sách Nội dung thực hành chủ yếu thực việc lập trình Socket họ giao thức TCP/IP giao thức UDP ứng dụng viết ngôn ngữ Java, kết hợp kĩ thuật lập trình đa luồng, lập trình web JSP để thực hạng mục học phần Thơng qua thực hành với độ khó tăng dần, sinh viên dần thông thạo với công việc lập trình phần làm quen kĩ thuật xây dựng hệ thống làm việc cho hiệu Mỗi thực hành chép mã nguồn vào báo cáo với kết chạy thử đính kèm hình ảnh Dù kiểm tra nhiều lần báo cáo xuất số lỗi sai sót, em mong đợi góp ý từ thầy Cảm ơn Thầy Nguyễn Văn Nguyên suốt trình thực hành nhiệt tình hỗ trợ em Em xin chân thành cảm ơn! Sinh viên thực NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Nhận xét: ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ………… Xác nhận giảng viên BÀI THỰC HÀNH SỐ HỌC PHẦN LẬP TRÌNH MẠNG I XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CLIENT/SERVER HOẠT ĐỘNG THEO GIAO THỨC TCP/IP Yêu cầu - Chương trình Server mở cổng chờ nhận kết nối từ Client - Client gửi chuỗi ký tự đến Server Server nhận xử lý gửi trả cho client công việc: + Đổi chuỗi gửi thành chuỗi in hoa + Đổi chuỗi gửi thành chuỗi thường + Đếm số từ chuỗi gửi Thuật tốn Server lập trình theo hướng đa tuyến, nhận thơng tin từ client gửi lên trả lời Sử dụng phương thức toLowerCase() toUpperCase() lớp String để chuyển string chữ thường chữ hoa, sau dùng thuật tốn đơn giản để đếm số từ có chuỗi Client thừa kế lớp Jframe để hiển thị giao diện Mã nguồn 3.1 Server package server; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class Server { public static final String IP = "localhost"; public static final int PORT = 7004; private ServerSocket serverSocket; public Server(String host, int port) { try { serverSocket = new ServerSocket(port); SocketThread socket = new SocketThread(serverSocket.accept()); new Thread(socket).start(); } catch (IOException ex) { Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String[] args) { new Server(IP, PORT); } } class SocketThread implements Runnable { private Socket s; public SocketThread(Socket s) { this.s = s; } @Override public void run() { try { DataInputStream dis = new DataInputStream(s.getInputStream()); DataOutputStream dos = new DataOutputStream(s.getOutputStream()); String serverReceive = dis.readUTF(); String serverResponse = serverReceive.toUpperCase() + " " + serverReceive.toLowerCase() + " " + countWords(serverReceive); dos.writeUTF(serverResponse); } catch (IOException ex) { Logger.getLogger(SocketThread.class.getName()).log(Level.SEVERE, null, ex); } } private int countWords(String s) { int wordCount = 0; boolean insideWord = false; for (int i = 0; i < s.length(); i++) { if (Character.isLetter(s.charAt(i)) && i != s.length() - 1) { insideWord = true; } else if (!Character.isLetter(s.charAt(i)) && insideWord) { wordCount++; insideWord = false; } else if (Character.isLetter(s.charAt(i)) && i == s.length() 1) { wordCount++; } } return wordCount; } } 3.2 Client package client; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import javax.swing.*; public class Client { private static Socket socket; private DataInputStream dataInputStream; private DataOutputStream dataOutputStream; public Client() { JFrame f = new JFrame("Trần Hữu Phúc – 15T1"); f.setSize(1000, 600); f.setResizable(false); f.setLocationRelativeTo(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLayout(null); JLabel jlbEnterString = new JLabel("Client request"); jlbEnterString.setBounds(10, 10, 100, 50); f.add(jlbEnterString); JTextArea jtaClientSend = new JTextArea(); jtaClientSend.setBounds(120, 10, 750, 100); f.add(jtaClientSend); JButton btnSend = new JButton("SEND"); btnSend.setBounds(900, 10, 80, 50); f.add(btnSend); JLabel jlbResult = new JLabel("SERVER RESPONSE"); jlbResult.setBounds(450, 100, 200, 50); f.add(jlbResult); JLabel jlbUppercase = new JLabel("Uppercase"); jlbUppercase.setBounds(10, 150, 100, 50); f.add(jlbUppercase); JTextArea jtaResultUppercase = new JTextArea(); jtaResultUppercase.setBounds(120, 150, 750, 100); f.add(jtaResultUppercase); JLabel jlbLowercase = new JLabel("Lowercase"); jlbLowercase.setBounds(10, 300, 100, 50); f.add(jlbLowercase); JTextArea jtaResultLowercase = new JTextArea(); jtaResultLowercase.setBounds(120, 300, 750, 100); f.add(jtaResultLowercase); JLabel jlbNumberString = new JLabel("Number"); jlbNumberString.setBounds(10, 450, 100, 50); f.add(jlbNumberString); JTextField jtfResultNumbberString = new JTextField(); jtfResultNumbberString.setBounds(120, 450, 750, 50); f.add(jtfResultNumbberString); btnSend.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { try { socket = new Socket("localhost",7004); dataInputStream = new DataInputStream(socket.getInputStream()); dataOutputStream = new DataOutputStream(socket.getOutputStream()); String msg = jtaClientSend.getText(); dataOutputStream.writeUTF(msg); dataOutputStream.flush(); String clientReceive = dataInputStream.readUTF(); String[] arrReceive = clientReceive.split(" "); int n = Integer.parseInt(arrReceive[arrReceive.length - 1]); for (int i = 0; i < n; i++) { jtaResultUppercase.append(arrReceive[i] +" "); } for (int i = n; i < arrReceive.length - 2; i++) { jtaResultLowercase.append(arrReceive[i]+" "); } jtfResultNumbberString.setText(arrReceive[arrReceive.length - 1]); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); f.setVisible(true); } public static void main(String[] args) { new Client(); } } Kết 10 connectionFailed(); return; } if (o == sendMessage || connected) { System.out.println("sending"); sendMessage(); return; } if (o == login) { userName = tf.getText().trim(); if(userName.length() == 0) return; String server = tfServer.getText().trim(); if(server.length() == 0) return; String portNumber = tfPort.getText().trim(); if(portNumber.length() == 0) return; int port = 0; try { port = Integer.parseInt(portNumber); } catch(Exception en) { return; } if (connected == false) { try { s = new Socket(server, port); socketOutputStream = new DataOutputStream(s.getOutputStream()); socketInputStream = new DataInputStream(s.getInputStream()); isConnected = true; bConnected = true; accept = new accept(s); Thread acceptThread = new Thread(accept); acceptThread.start(); } catch (UnknownHostException e1) { System.out.println("Miss Server!!"); } catch (IOException e1) { System.out.println("Can't output!!"); } 25 } tf.setText(""); label.setText("Nhập tin nhắn bấm enter send!"); connected = true; login.setEnabled(false); logout.setEnabled(true); sendMessage.setEnabled(true); tfServer.setEditable(false); tfPort.setEditable(false); tf.addActionListener(this); } } class accept implements Runnable { Socket s; accept(Socket s){ this.s = s; } @Override public void run() { while(bConnected) { try { String str = socketInputStream.readUTF(); ta.append(str + "\n"); } catch (SocketException e3){ System.out.println("bye!!"); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) { 26 new ChatClientTCP(); } } Kết BÀI THỰC HÀNH SỐ HỌC PHẦN LẬP TRÌNH MẠNG I XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CLIENT/SERVER HOẠT ĐỘNG THEO GIAO THỨC UDP Yêu cầu - Chương trình Server mở cổng chờ nhận kết nối từ Client 27 - Client gửi chuỗi ký tự đến server Server nhận xử lý gửi trả cho client công việc: + Đổi chuỗi gửi thành chuỗi in hoa + Đổi chuỗi gửi thành chuỗi thường + Đếm số từ chuỗi gửi Thuật toán Server lập trình theo hướng đa tuyến, nhận thơng tin từ client gửi lên trả lời Sử dụng phương thức toLowerCase() toUpperCase() lớp String để chuyển string chữ thường chữ hoa, sau dùng thuật tốn đơn giản để đếm số từ có chuỗi Client thừa kế lớp Jframe để hiển thị giao diện Mã nguồn Tham khảo source file đính kèm Kết 28 29 II XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CLIENT/SERVER HOẠT ĐỘNG THEO GIAO THỨC UDP Yêu cầu - Chương trình Client cho phép nhập vào từ bàn phím chuỗi biễu diễn phép tính gồm tốn tử +, -, (, ) Ví dụ: (2+7)/3 - Chương trình Server thực tính tốn trả kết cho Client - 2.Thuật toán Client xây dựng form đơn giản, nhập biểu thức cần tính vào textbox gửi lên server Server xây dựng chương trình tính biểu thức trung tố (có thể tính trực tiếp chuyển sang biểu thức hậu tố tính), sau gửi kết lại cho Client 3.Mã nguồn - Tham khảo source file đính kèm 4.Kết 30 III XÂY DỰNG CHƯƠNG TRÌNH HỘI THOẠI CHAT ROOM CLIENT/SERVER HOẠT ĐỘNG THEO GIAO THỨC UDP Yêu cầu - Chương trình Server mở cổng chờ nhận kết nối từ Client - Chương trình Client kết nối thực trao đổi với chương trình Server Thuật tốn - Client có giao diện chat room, có đặt nick name chat với connect đến địa port Server mở lên bắt đầu tiến hành nhận thông tin từ client, có client kết nối thêm vào danh sách Khi có client gửi tin lên server server trả kết cho tất client có danh sách Mã nguồn - Tham khảo source file đính kèm Kết 31 BÀI THỰC HÀNH SỐ HỌC PHẦN LẬP TRÌNH MẠNG Yêu cầu Nội dung tập: Lập trình JSP để thực công việc sau: Thiết kế Website quản lý nhân phòng ban theo mẫu sau với sở liệu (Gồm trang: xem thơng tin, chèn thơng tin, cập nhật thơng tin, xóa thơng tin, tìm kiếm thơng tin) Kết minh họa: 32 Sơ đồ hệ thống 33 Đăng xuất 34 Cập nhật Sơ đồ sở liệu Thêm phòng ban Xóa phòng ban Cập nhật Xóa nhân viên Sơ đồ lớp Thêm nhân viên Đăng nhập Xem danh sách nhân viên 35 Xem chi tiết nhân viên Trang chủ Xem danh sách phòng ban Xố tất Tìm kiếm 1 1 Mã nguồn - Tham khảo source file đính kèm Kết 36 Xem chi tiết phòng ban 37 38 KẾT LUẬN Sau thực hành em học thêm nhiều kiến thức lập trình mạng để phục vụ cho việc xác định chọn chuyên ngành sau Một lần em xin chân thành cảm ơn thầy! 39 ... học lí thuyết tảng Mạng máy tính, Lập trình Java, Lập trình mạng, học phần Thực hành Lập trình mạng hội tụ thực kiến thức học sách Nội dung thực hành chủ yếu thực việc lập trình Socket họ giao... Java, kết hợp kĩ thuật lập trình đa luồng, lập trình web JSP để thực hạng mục học phần Thông qua thực hành với độ khó tăng dần, sinh viên dần thơng thạo với cơng việc lập trình phần làm quen kĩ... Mỗi thực hành chép mã nguồn vào báo cáo với kết chạy thử đính kèm hình ảnh Dù kiểm tra nhiều lần báo cáo xuất số lỗi sai sót, em mong đợi góp ý từ thầy cô Cảm ơn Thầy Nguyễn Văn Nguyên suốt trình

Ngày đăng: 25/02/2019, 21:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan