(NB) Giáo trình Cơ sở lập trình java căn bản cung cấp các kiến thức cơ bản về các kỹ thuật lập trình nâng cao với ngôn ngữ Java. Giúp sinh viên làm quen với kỹ thuật lập trình giao diện và lập trình mạng; lập trình dịch vụ web với Java. Cung cấp cho sinh viên các kỹ năng làm chủ các kỹ thuật lập trình ứng dụng trên Java.
BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ KỸ THUẬT CÔNG NGHỆ - - GIÁO TRÌNH MƠ ĐUN : CƠ SỞ LẬP TRÌNH JAVA CĂN BẢN NGHỀ: LẬP TRÌNH VIÊN MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: 13A/QĐ-CĐNKTCN ngày 10 tháng 01 năm 2019 Hiệu trưởng Trường Cao đẳng nghề Kỹ thuật Công nghệ Hà Nội, năm 2021 (Lưu hành nội bộ) TUYÊN BỐ BẢN QUYỀN: Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm MÃ TÀI LIỆU : MĐLTV 18 LỜI GIỚI THIỆU Trong năm qua, dạy nghề có bước tiến vượt bậc số lượng chất lượng, nhằm thực nhiệm vụ đào tạo nguồn nhân lực kỹ thuật trực tiếp đáp ứng nhu cầu xã hội Cùng với phát triển khoa học công nghệ giới, lĩnh vực Cơng nghệ thơng tin nói chung nghề Lập trình viên máy tính Việt Nam nói riêng có bước phát triển đáng kể Chương trình khung nghề Cơng nghệ thơng tin xây dựng sở phân tích nghề, phần kỹ thuật nghề kết cấu theo môđun Để tạo điều kiện thuận lợi cho sở dạy nghề trình thực hiện, việc biên soạn giáo trình kỹ thuật nghề theo môđun đào tạo nghề cấp thiết Mô đun 18: Cơ sở lập trình Java mơ đun đào tạo nghề biên soạn theo hình thức tích hợp lý thuyết thực hành Trong q trình thực hiện, nhóm biên soạn tham khảo nhiều tài liệu nước, kết hợp với kinh nghiệm thực tế Mặc dù có nhiều cố gắng, khơng tránh khỏi sai sót, mong nhận đóng góp ý kiến độc giả để giáo trình hồn thiện Xin chân thành cảm ơn! Hà Nội, ngày 23 tháng 04 năm 2021 Tham gia biên soạn Chủ biên Đỗ Tiến Hưng – Giáo viên Khoa CNTT Tập thể Giảng viên Khoa CNTT Mọi thông tin đóng góp chia sẻ xin gửi hịm thư hungdt.ktcnt@gmail.com, liên hệ số điện thoại 0949074004 MỤC LỤC TUYÊN BỐ BẢN QUYỀN: BÀI 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA Giới thiệu Java 2.1 Đơn giản 2.2 Hướng đối tượng .9 2.3 Độc lập phần cứng hệ điều hành 2.4 Mạnh mẽ 10 2.5 Bảo mật 10 2.6 Phân tán 11 2.7 Đa luồng 11 2.8 Động 11 Môi trường lập lập Java 11 3.1 Applets 11 3.2 Ứng dụng thực thi qua dòng lệnh 11 3.3 Ứng dụng đồ họa 11 3.4 Servlet 11 3.5 Ứng dụng sở liệu 11 3.6 Máy ảo Java (JVM-Java Virtual Machine) 12 3.7 Bộ công cụ phát triển JDK (Java Development Kit) 14 3.8 Java Core API 14 Công nghệ Java 16 Các cấu trúc lập trình Java .16 5.1 Viết chương trình Java đơn giản 16 5.2 Cấu trúc chương trình java 18 5.3 Hằng, biến, kiểu liệu, toán tử 20 5.4 Các cấu trúc điều khiển Java .25 5.5 Mảng xâu 28 5.6 Nhập liệu từ bàn phím 29 BÀI 2: LỚP VÀ HƯỚNG ĐỐI TƯỢNG TRONG JAVA 30 Lớp .30 1.1 Khái niệm 30 1.2 Khai báo lớp 30 1.3 Thuộc tính lớp 32 1.4 Phương thức lớp 32 1.5 Chỉ định truy xuất lớp 33 1.6 Tạo đối tượng 36 1.7 Gói – Package 37 Hướng đối tượng Java 64 2.1 Tính đóng gói 64 2.2 Tính kế thừa 65 2.3 Tính đa hình 68 2.4 Final class, abstract class interface 70 BÀI 3: APPLET 71 Cấu trúc Applet 71 2.1 Sự khác Aplication Applet 73 2.2 Những giới hạn bảo mật Applet 75 Chu trình sống Applet 76 Truyền tham số cho Applet 77 Lớp Graphics 78 5.1 Vẽ chuỗi, ký tự byte 79 5.2 Vẽ đường thẳng (Line) Oval 81 5.3 Vẽ hình chữ nhật (Rectangle) hình chữ nhật bo góc (Rounded Rectangle) 82 5.4 Vẽ hình chữ nhật 3D vẽ hình cung (Arc) 83 5.5 Vẽ hình PolyLine 84 5.6 Vẽ tô đa giác (Polygon) 85 Điều khiển màu va font 87 6.1 Điều khiển màu 87 6.2 Điều khiển Font 89 BÀI LẬP TRÌNH GIAO DIỆN 95 Cơ chế lập trình đồ hoạ giao diện JAVA 95 Thư viện AWT Swing 96 Container Component 98 3.1 Container 98 3.2 Thành phần (Component) 98 Quản lý Layout 98 4.1 FlowLayout manager 99 4.2 BorderLayout Manager 100 4.3 CardLayout Manager 101 4.4 GridLayout Manager 104 4.5 GridBagLayout Manager .105 Lập trình GUI .110 5.1 Các đối tượng đơn giản 110 5.2 Xử lý kiện 120 Lập trình GUI nâng cao 125 6.1 Đối tượng List 125 6.2 Đối tượng Dialog 127 6.3 Đối tượng Menu 128 6.4 Đối tượng Panel 131 6.5 Đối tượng Bar .132 6.6 Đối tượng Tree 132 6.7 Đối tượng Table 132 Bài 5: Lập trình mạng với JAVA .133 Khái niệm mạng giao thức 133 1.1 Mạng máy tính .133 Port Number 133 IP Address 134 MAC Address 134 Protocol .134 Các chế độ giao tiếp 134 Các lớp java.net 136 2.1 InetAddress 136 2.2 ServerSocket 137 2.3 Socket 137 2.4 DatagramSocket .137 Xây dựng ứng dụng Client/Server .137 3.1 Quy Trình Thực Hiện Trên Máy Khách (Client) 137 3.2 Quy Trình Thực Hiện Trên Máy Chủ (Server) 138 TÀI LIỆU THAM KHẢO 139 GIÁO TRÌNH MƠ ĐUN Tên mơ đun: Cơ sở lập trình java Mã mơ đun: MĐLTV 18 Vị trí, tính chất, ý nghĩa vai trị mơ đun : - Vị trí: Mơ đun sở lập trình JAVA thuộc nhóm mơn học chun ngành bố trí giảng dạy sau học xong môn học, mô đun sở ngành như: Cơ sở liệu, Ngơn ngữ lập trình C/C++, Lập trình hướng đối tượng, Cấu trúc liệu giải thuật - Tính chất: Mơ đun Cơ sở lập trình Java cung cấp kiến thức kỹ thuật lập trình nâng cao với ngơn ngữ Java Giúp sinh viên làm quen với kỹ thuật lập trình giao diện lập trình mạng; lập trình dịch vụ web với Java Cung cấp cho sinh viên kỹ làm chủ kỹ thuật lập trình ứng dụng Java.Sinh viên sử dụng thư viện Java để lập trình ứng dụng thực tế Mục tiêu mơ đun - Về kiến thức: + Trình bày vấn đề ngôn ngữ lập trình java như: kiểu liệu, biến, khai báo thư viên, hàm, mảng, lớp đối tượng vấn đề với lập trình hướng đối tượng + Nêu làm rõ mạnh lĩnh vực cơng nghệ java + Trình bày vấn đê liên quan đến lập trịnh applet java : đối tượng giao diện bản, Container, Component… + Trình bày khái niệm thuộc tính, phương thức, phạm vi truy cập thuộc tính phương thức lớp đặc điểm hướng đối tượng java + Trình bày nguyên lý đối tương sử dụng lập trình mạng java + Trình bày khái niệm chu kỳ sống Applet - Về kỹ năng: + Xây dựng ứng dụng với ngôn ngữ lập trình Java + Vân dụng kỹ thuật lập trình hướng đối tượng trọng java, lập trình mạng, lập trình giao diện để xây dựng module ứng dụng đơn giản như: gửi nhận tin online, offlinen trực tiếp hai máy tính qua server + Tạo truyền tham số cho Applet + Thiết kế xây dựng giao diện chương trình thực tế Java + Xây dựng ứng dụng Client/Server + Tích cực ứng dụng lập trình trực quan cho ứng dụng thực tế + Khả tìm tài liệu, đọc hiểu tài liệu + Khả làm việc nhóm - Về lực tự chủ trách nhiệm: + Bố trí làm việc khoa học đảm bảo an tồn cho người phương tiện học tập Nội dung mô đun Tên mô đun Thời gian Lý thuyết Thực hành 10 14 15 20 12 18 14 26 60 Số Tổng TT số Bài 1: Tổng quan Java công nghệ Java 1.Lịch sử đời Java 2.Một số đặc tính Java 15 3.Mơi trường lập trình Java 4.Cơng nghệ Java 5.Các cấu trúc lập trình Java Bài 2: Lớp hướng đối tượng JAVA 1.Lớp 20 2.Hướng đối tượng Java Bài 3: Applet 1.Khái niệm 2.Cấu trúc Applet 3.Chu trình sống Applet 4.Truyền tham số cho Applet 5.Lớp Graphics 6.Điều khiển màu va font Bài 4: Lập trình giao diện 1.Cơ chế lập trình đồ hoạ giao diện JAVA 2.Thư viện AWT Swing 3.Container Component 4.Quản lý Layout 5.Lập trình GUI 6.Lập trình GUI nâng cao Bài 5: Lập trình mạng với JAVA 1.Khái niệm mạng giao thức 2.Các lớp java.net 3.Xây dựng ứng dụng Client/Server Thi kết thúc mô đun Cộng 90 Kiểm tra* * Ghi chú: Thời gian kiểm tra lý thuyết tính vào gìơ lý thuyết, Thời gian kiểm tra thực hành tính vào thực hành BÀI 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA Mã bài: MĐLTV 18.1 Giới thiệu Java Java ngơn ngữ lập trình Sun Microsystems giới thiệu vào tháng năm 1995 Từ đó, trở thành cơng cụ lập trình lập trình viên chuyên nghiệp Java xây dựng tảng C C++ Do sử dụng cú pháp C đặc trưng hướng đối tượng C++ Vào năm 1991, nhóm kỹ sư Sun Microsystems có ý định thiết kế ngơn ngữ lập trình để điều khiển thiết bị điện tử Tivi, máy giặt, lò nướng, … Mặc dù C C++ có khả làm việc trình biên dịch lại phụ thuộc vào loại CPU Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên đắt Vì để loại CPU có trình biên dịch riêng tốn Do nhu cầu thực tế địi hỏi ngôn ngữ chạy nhanh, gọn, hiệu độc lập thiết bị tức chạy nhiều loại CPU khác nhau, môi trường khác “Oak” đời vào năm 1995 đổi tên thành Java Mặc dù mục tiêu ban đầu cho Internet đặc trưng không phụ thuộc thiết bị nên Java trở thành ngôn ngữ lập trình cho Internet Các đặc tính Java Đơn giản Hướng đối tượng Độc lập phần cứng hệ điều hành Mạnh Bảo mật Phân tán Đa luồng Động 2.1 Đơn giản Những người thiết kế mong muốn phát triển ngôn ngữ dễ học quen thuộc với đa số người lập trình Do Java loại bỏ đặc trưng phức tạp C C++ thao tác trỏ, thao tác nạp đè (overload),… Java không sử dụng lệnh “goto” file header (.h) Cấu trúc “struct” “union” loại bỏ khỏi Java 2.2 Hướng đối tượng Java thiết kế xoay quanh mơ hình hướng đối tượng Vì Java, tiêu điểm liệu phương pháp thao tác lên liệu Dữ liệu phương pháp mô tả trạng thái cách ứng xử đối tượng Java 2.3 Độc lập phần cứng hệ điều hành Đây khả chương trình viết máy chạy đâu Chúng thể mức mã nguồn mức nhị phân Ở mức mã nguồn, người lập trình cần mơ tả kiểu cho biến Kiểu liệu Java quán cho tất hệ điều hành phần cứng khác Java có riêng thư viện lớp sở Vì chương trình Java viết máy dịch chạy trơn tru loại máy khác mà không cần viết lại Ở mức nhị phân, chương trình biên dịch chạy khác mà không cần dịch lại mã nguồn Tuy cần có phần mềm máy ảo Java (sẽ đề cập đến phần sau) hoạt động trình thơng dịch máy thực thi Trình biên dịch chuyển chương trình viết C, C++ hay ngôn ngữ khác thành mã máy phụ thuộc vào CPU Nên muốn chạy loại CPU khác, phải biên dịch lại chương trình Hình 2.2 Môi trường phát triển Java chia làm hai phần: Trình biên dịch trình thơng dịch Khơng C hay C++, trình biên dịch Java chuyển mã nguồn thành dạng bytecode độc lập với phần cứng mà chạy CPU Nhưng để thực thi chương trình dạng bytecode, máy cần phải có trình thơng dịch Java hay gọi máy ảo Java Máy ảo Java chuyển bytecode thành mã lệnh mà CPU thực thi 2.4 Mạnh mẽ Java yêu cầu chặt chẽ kiểu liệu phải mô tả rõ ràng viết chương trình Chúng kiểm tra lúc biên dịch thời gian thơng dịch Java loại bỏ kiểu liệu dễ gây lỗi 2.5 Bảo mật Java cung cấp số lớp để kiểm tra bảo mật Ở lớp đầu tiên, liệu phương pháp đóng gói bên lớp Chúng truy xuất thông qua giao diện mà lớp cung cấp Java khơng hỗ trợ trỏ khơng cho phép truy xuất nhớ trực tiếp Nó ngăn chặn không cho truy xuất thông tin bên mảng kỹ thuật tràn cung cấp kỹ thuật dọn rác nhớ Các đặc trưng tạo cho Java an tồn có khả động cao Trong lớp thứ hai, trình biên dịch kiểm sốt để đảm bảo mã an tồn Lớp thứ ba đảm bảo trình thơng dịch Chúng kiểm tra xem bytecode có đảm bảo qui tắc an toàn trước thực thi Lớp thứ tư kiểm soát việc nạp lớp lên nhớ để giám sát việc vi phạm giới hạn truy xuất trước nạp vào hệ thống 10 Hình 5.21 Window Listener Các listener cho lớp Component hình 5.22: Lập trình GUI nâng cao 6.1 Đối tượng List Thỉnh thoảng, cần thiết để trình bày danh sách chọn lựa đến người dùng GUI Người dùng click vào hay nhiều item từ danh sách Một danh sách chọn lựa tạo cách sử dụng số chuỗi (String) hay giá trị văn Để tạo danh sách chọn lựa, làm theo bước cho sau đây: 1) 2) 3) 4) Tạo danh sách phần tử Thêm item (có kiểu String) vào danh sách, lần thêm item Bố trí danh sách hình Hiển thị danh sách hình Java hỗ trợ lớp Choice cho phép tạo danh sách chứa nhiều item Khi danh sách vừa tạo ra, rỗng Choice colors=new Choice(); Mỗi thời điểm thêm item cách sử dụng phương thức addItem bên dưới: colors.addItem(“Red”); colors.addItem(“Green”); Chương trình 5.8 minh họa cách tạo danh sách chọn lựa: Chương trình 5.8 import java.awt.*; class Choicetest extends Frame { Label l1=new Label(“What is your favorite color”); Choice colors=new Choice(); public Choicetest(String title) { super(title); setLayout(new FlowLayout()); add(l1); colors.addItem(“White”); colors.addItem(“Red”); colors.addItem(“Orange”); colors.addItem(“Green”); colors.addItem(“Yellow”); colors.addItem(“Blue”); colors.addItem(“Black”); add(colors); } public static void main(String args[]) { Choicetest t=new Choicetest(“Choice t.setSize(300,200); t.show(); } } Kết xuất hình bên dưới: list”); Hình 5.10 Danh sách chọn lựa 6.2 Đối tượng Dialog Lớp ‘Dialog’ tương tự lớp Frame, nghĩa Dialog lớp lớp Window Đối tượng dialog tạo sau: Frame myframe=new Frame(“My frame”); // calling frame String title = “Title”; boolean modal = true; // whether modal or not Dialog dlg=new Dialog(myframe, title, modal); Số hạng ‘modal’ dialog ngăn chặn tương tác xảy đến với cửa sổ mở khác, dialog hiển thị hình Kiểu hộp thoại ngăn chặn người dùng tương tác với cửa sổ khác hình, dialog đóng lại Hình 5.4 Các lớp đối tượng thành phần Bây xét số thành phần thường sử dụng 6.3 Đối tượng Menu Ngơn ngữ Java có tập hợp lớp đối tượng để tạo menu Có hai loại menu – pull down pop-up Menu làm cho ứng dụng ta xây dựng dễ sử dụng Chỉ menubar đặt frame Menubar nằm ngang đặt đỉnh frame Nó liệt kê mục chọn khác hay menu Một menu độc lập chứa mục chọn con, mục gọi menuitem Java cung cấp checkbox menuitem, chúng bật hay mở, phụ thuộc vào trạng thái Hình 5.14 minh họa cách sử dụng menubar, menu, menuItem, CheckboxMenuItem Chương trình 5.14 import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements ActionListener, MouseListener { MenuItem exitItem; PopupMenu optionsMenu; Frame frame; public MyFrame() { setTitle("Menu Example"); setSize(300,200); MenuBar mbar=new MenuBar(); setMenuBar(mbar); Menu fileMenu=new Menu("File"); mbar.add(fileMenu); fileMenu.addActionListener(this); MenuItem newItem=new MenuItem("New"); fileMenu.add(newItem); MenuItem openItem=new MenuItem("Open"); fileMenu.add(openItem); fileMenu.addSeparator(); MenuItem saveItem=new MenuItem("Save"); fileMenu.add(saveItem); MenuItem saveAsItem=new MenuItem("Save As"); fileMenu.add(saveAsItem); fileMenu.addSeparator(); exitItem=new MenuItem("Exit"); fileMenu.add(exitItem); saveAsItem.addActionListener(this); Menu editMenu=new Menu("Edit"); mbar.add(editMenu); editMenu.addActionListener(this); MenuItem cutItem=new MenuItem("Cut"); editMenu.add(cutItem); MenuItem copyItem=new MenuItem("Copy"); editMenu.add(copyItem); MenuItem pasteItem=new MenuItem("Paste"); editMenu.add(pasteItem); editMenu.addSeparator(); Menu helpMenu=new Menu("Help"); mbar.add(helpMenu); helpMenu.addActionListener(this); MenuItem contentItem=new MenuItem("Content"); helpMenu.add(contentItem); MenuItem indexItem=new MenuItem("Index"); helpMenu.add(indexItem); Menu findMenu=new Menu("Find"); helpMenu.add(findMenu); addMouseListener(this); MenuItem nameItem=new MenuItem("Search by Name"); findMenu.add(nameItem); MenuItem cacheItem=new MenuItem("Search from cache"); findMenu.add(cacheItem); optionsMenu=new PopupMenu("Options"); editMenu.add(optionsMenu); optionsMenu.addActionListener(this); MenuItem readItem=new MenuItem("Read Only"); optionsMenu.add(readItem); optionsMenu.addSeparator(); Menu formatMenu=new Menu("Format text"); optionsMenu.add(formatMenu); this.add(optionsMenu); formatMenu.addActionListener(this); CheckboxMenuItem insertItem=new CheckboxMenuItem("Insert",true); formatMenu.add(insertItem); CheckboxMenuIte overtypeItem=new CheckboxMenuItem("Overtype",false); formatMenu.add(overtypeItem); } public void actionPerformed(ActionEvent ae) { if (ae.getActionCommand().equals("Exit")) { System.exit(0); } } public void mouseEntered(MouseEvent m){} public void mouseExited(MouseEvent m){} public void mouseClicked(MouseEvent m) { optionsMenu.show(this,m.getX(),m.getY()); } public void mouseReleased(MouseEvent m){} public void mousePressed(MouseEvent m){} public static void main(String[] args) { MyFrame frame=new MyFrame(); frame.show(); } } Khi bạn thực thi chương trình trên, hình với trình đơn File, Edit Help hiển thị Khi bạn click vào mục File, bạn thấy kết xuất sau đây: Hình 5.23 Pull-down Menu Một menu chứa menu Khi bạn click vào trình đơn Help, mục có tên Content, Index Find xuất Trong trình đơn Find, có mục Search by name Search from Cache Mặt khác pop-up menu bạn nhấn chuột phải hình: Hình 5.24 Pop-up menu Các mục chọn trình bày pop-up menu Read-Only Format text Mục ‘Format text’ có mục Insert Overtype Những mục chọn thuộc kiểu Checkboxmenuitem Khi bạn click vào mục chọn, đánh dấu bạn thấy dấu chọn tương ứng mục chọn Ngôn ngữ Java cung cấp lớp khác Những lớp sử dụng để tạo Menubar, Menu, MenuItem Checkboxmenuitem chương trình 6.4 Đối tượng Panel Panel sử dụng để nhóm số thành phần lại với Cách đơn giản để tạo panel sử dụng hàm constructor nó, hàm Panel() Chương trình 5.2 cách tạo panel: Chương trình 5.2 import java.awt.*; class Paneltest extends Panel { public static void main(String args[]) { Paneltest p=new Paneltest(); Frame f=new Frame(“Testing a Panel”); f.add(p); f.setSize(300,200); f.setVisible(true); } public Paneltest() { } } Panel khơng thể nhìn thấy trực tiếp Do đó, cần thêm panel đến frame Vì ta cần tạo frame thêm Panel tạo vào Tuy nhiên, frame khơng nhìn thấy được, khơng có kích thước Chúng ta sử dụng hai phương thức phương thức main – setSize() setVisible() để thiết lập kích thước hiển thị frame Kết xuất chương trình: Hình 5.3 Panel 6.5 Đối tượng Bar 6.6 Đối tượng Tree 6.7 Đối tượng Table Bài 5: Lập trình mạng với JAVA Khái niệm mạng giao thức 1.1 Mạng máy tính a Mơ hình phân tầng b Các giao thức mạng c Socket Socket giao diện lập trình ứng dụng (API-Application Programming Interface) Socket cho phép thiết lập kênh giao tiếp mà hai đầu kênh đánh dấu hai cổng (port) Thơng qua cổng q trình nhận gởi liệu với trình khác Port Number Để thực giao tiếp, hai q trình phải cơng bố số hiệu cổng (port number) socket mà sử dụng Mỗi cổng giao tiếp thể địa xác định hệ thống Khi trình gán số hiệu cổng, nhận liệu gởi đến cổng từ trình khác Quá trình lại yêu cầu tạo socket Số cổng (port number) sử dụng để xác định ứng dụng khác Nó hoạt động điểm kết cuối giao tiếp ứng dụng Số cổng kết hợp với địa IP để giao tiếp hai ứng dụng Số hiệu cổng gán cho Socket phải phạm vi máy tính đó, có giá trị khoảng từ đến 65535 (16 bits) Trong đó, giá trị cổng: Từ 0-1023: cổng hệ thống (common hay well-known ports), dành riêng cho trình hệ thống Từ 1024-49151: cổng phải đăng ký (registered port) Các ứng dụng muốn sử dụng cổng phải đăng ký với IANA (Internet Assigned Numbers Authority) Từ 49152-65535: cổng dùng riêng hay cổng động (dynamic hay private port) Người sử dụng dùng cho ứng dụng mình, khơng cần phải đăng ký Một số cổng thường sử dụng: 21: dịch vụ FTP 23: dịch vụ Telnet 25: dịch vụ Email (SMTP) 80: dịch vụ Web (HTTP) 110: dịch vụ Email (POP) IP Address Ngoài số hiệu cổng, hai bên giao tiếp phải biết địa IP Địa IP giúp phân biệt máy tính với máy tính mạng TCP/IP Trong số hiệu cổng dùng để phân biệt trình khác máy tính Địa IP (IP Address) số gán cho nút mạng, ví dụ: 192.168.0.1 Nó bao gồm số thập phân khoảng từ đến 255 Tham khảo thêm địa IP: http://echip.com.vn/tim-hieu-ve-dia-chi-ipa20130406070715832-c1110.html IP Address địa luận lý (logical address) thay đổi MAC Address Địa MAC (Media Access Control) tầng giao thức truyền liệu (data link), phần tầng liên kết liệu mô hình tầng OSI Nó định danh NIC (Network Interface Controller) Một nút mạng có nhiều NIC có địa MAC Protocol Một giao thức (Protocol) quy tắc bản, mà ứng dụng phải tuân thủ để giao tiếp Ví dụ: giao thức TCP, FTP, Telnet, SMTP, POP, … Các chế độ giao tiếp Xét kiến trúc hệ thống mạng TCP/IP: Tầng vận chuyển giúp chuyển tiếp thông điệp chương trình ứng dụng với Nó hoạt động theo hai chế độ: Giao tiếp có nối kết, sử dụng giao thức TCP Hoặc giao tiếp không nối kết, sử dụng giao thức UDP Socket giao diện chương trình ứng dụng với tầng vận chuyển Nó cho phép ta chọn giao thức sử dụng tầng vận chuyển TCP (Transmission Control Protocol) hay UDP (User Datagram Protocol) cho chương trình ứng dụng So sánh TCP với UDP: TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Giao thức hướng kết nối (connection-orientedGiao thức không kết nối (connection-less protocol), tồn kênh giao tiếp ảo hai bên protocol), không tồn kênh giao tiếp ảo giao tiếp hai bên giao tiếp Dữ liệu gởi theo chế độ không bảo đảm: Dữ liệu gởi theo chế độ bảo đảm: có Khơng kiểm tra lỗi, khơng phát khơng kiểm tra lỗi truyền lại gói tin lỗi hay mất, bảo truyền lại gói tin bị lỗi hay mất, không bảo đảm đảm thứ tự đến gói tin thứ tự đến gói tin Dữ liệu xác, Tốc độ truyền chậm Dữ liệu khơng xác, tốc độ truyền nhanh Thích hợp cho ứng dụng khơng u cần độ Thích hợp cho ứng dụng cần độ xác xác cao cần tốc độ nhanh như: cao như: truyền file, thông tin điều khiển, … truyền âm thanh, hình ảnh, … Các lớp java.net 2.1 InetAddress Lớp Java InetAddress đại diện cho địa IP Lớp java.net.InetAddress cung cấp phương thức để lấy IP host InetAddress xử lý địa IPv4 IPv6 InetAddress khơng có constructor, để tạo đối tượng InetAddress , bạn phải sử dụng phương thức Factory public static InetAddress getLocalHost () : trả thể InetAdddress chứa tên địa localhost public static InetAddress getByName (String hostname) : trả thể InetAddress có chứa LocalHost IP tên public static InetAddress[ ] getAllByName (String hostname) : trả danh sách InetAddress có chứa LocalHost IP tên Một số phương thức lớp InetAddress: public String getHostName() : trả tên máy chủ (host) địa IP public String getHostAddress() : trả địa IP định dạng chuỗi Ví dụ: package com.gpcoder.net; import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressExample { public static void main(String[] args) throws UnknownHostException { InetAddress ip = InetAddress.getLocalHost(); System.out.println("Host Name: " + ip.getHostName()); System.out.println("IP Address: " + ip.getHostAddress()); ip = InetAddress.getByName("www.studytonight.com"); System.out.println("\nHost Name: " + ip.getHostName()); System.out.println("IP Address: " + ip.getHostAddress()); System.out.println("\nAll address of google: "); InetAddress sw[] = InetAddress.getAllByName("www.google.com"); for (int i = 0; i < sw.length; i++) { System.out.println(sw[i]); } } } Thực thi chương trình trên, ta có kết sau: Host Name: DESKTOP-6NRLLE7 IP Address: 192.168.101.2 Host Name: www.studytonight.com IP Address: 104.25.248.103 All address of google: www.google.com/64.233.187.147 www.google.com/64.233.187.105 www.google.com/64.233.187.104 www.google.com/64.233.187.106 www.google.com/64.233.187.103 www.google.com/64.233.187.99 2.2 ServerSocket 2.3 Socket Socket gì? Chúng ta hiểu socket giao diện cấu trúc truyền thơng đóng vai trị điểm cuối(end point) để truyền thông Mỗi tiến trình muốn truyền thơng socket, phải tạo socket socket phải gán định danh gọi địa socket Một địa socket tổ hợp gồm địa chỉ: địa IP địa cổng(port) Như địa socket xác định đầu mút cuối truyền thơng Nó tiến trình truyền thông nào(port) chạy trên máy nào(IP) thực truyền thông Để hỗ trợ nguời phát triển ứng dụng mạng sử dụng socket, nhà sản xuất phần mềm xây dựng sẵn tập hàm thư viện API gọi tập hàm thư viện giao diện socket Giao diện socket phân làm loại socket(hình 2) 2.4 DatagramSocket Xây dựng ứng dụng Client/Server 3.1 Quy Trình Thực Hiện Trên Máy Khách (Client) 3.2 Quy Trình Thực Hiện Trên Máy Chủ (Server) TÀI LIỆU THAM KHẢO [1] UDS Ebook, Giáo trình hệ thống mạng máy tính [2] Hà Mạnh Đào, Giáo trình lập trình mạng, Học viện Bưu viễn thơng, 2010 ... C/C++, Lập trình hướng đối tượng, Cấu trúc liệu giải thuật - Tính chất: Mơ đun Cơ sở lập trình Java cung cấp kiến thức kỹ thuật lập trình nâng cao với ngơn ngữ Java Giúp sinh viên làm quen với kỹ thuật. .. kỹ thuật lập trình giao diện lập trình mạng; lập trình dịch vụ web với Java Cung cấp cho sinh viên kỹ làm chủ kỹ thuật lập trình ứng dụng Java. Sinh viên sử dụng thư viện Java để lập trình ứng... 1: Tổng quan Java công nghệ Java 1.Lịch sử đời Java 2.Một số đặc tính Java 15 3.Mơi trường lập trình Java 4.Cơng nghệ Java 5.Các cấu trúc lập trình Java Bài 2: Lớp hướng đối tượng JAVA 1.Lớp 20