Giới thiệu cơ bản lý thuyết và hướng dẫn chi tiết các bài tập trong "Lập trình truyền thông" gồm 5 chương như sau: Chương 1: Tổng quan về lập trình truyền thông Chương 2: Tổng quan ngôn ngữ lập trình Java Chương 3: Ống dẫn - PIPE Chương 4: Lập trình Socket Chương 5: Kích hoạt phương thức từ xa - RMI
TR !NG ∃%I H∋C QU)NG NAM KHOA CÔNG NGH THÔNG TIN & L L P P T T R R Ì Ì N N H H T T R R U U Y Y ∃ ∃ N N T T H H Ô Ô N N G G Biên so n: ThS. Nguy&n V(n Kh+,ng Email: khuongdx@gmail.com Sinh viên:…………………………………………… L p:…………………………………………………… TP Tam K∀, 2013 Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 1 GI%I THI U H(C PH∗N: Tên h+c ph−n: L,p trình truy/n thông. S0 ti1t: 45 ti1t (3 tín ch3). 10%: Chuyên c−n và thái 56 h+c t7p. 20%: Ki8m tra gi9a k< (Th>c hành trên máy tính) 20%: Ti8u lu7n (Chia nhóm). 50%: Thi k1t thúc h+c ph−n (Theo hình th?c trΑc nghiΧm) N1I DUNG H(C PH∗N: H+c ph−n g∆m 5 ch:Εng nh: sau: 1. Ch:Εng 1: TΦng quan vΓ l7p trình truyΓn thông 2. Ch:Εng 2: TΦng quan ngôn ng9 l7p trình Java 3. Ch:Εng 3: Ηng dΙn - PIPE 4. Ch:Εng 4: L7p trình Socket 5. Ch:Εng 5: Kích hoΚt ph:Εng th?c tΛ xa - RMI Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 2 CH2&NG 1: T3NG QUAN V4 L5P TRÌNH TRUY4N THÔNG 1.1. C& CH6 LIÊN L7C LIÊN QUÁ TRÌNH § TruyΓn thông là m6t khái niΧm dùng 58 ch3 s> giao ti1p, trao 5Φi thông tin gi9a hai hay nhiΓu th>c th8 trong m6t hΧ th0ng nào 5ó. § ViΧc giao ti1p phΜi có nh9ng tiΧn ích hΝ trΟ bΠi hΧ 5iΓu hành máy tính. § Các tiΧn ích này th:Θng 5:Οc g+i vΡi cái tên là CΕ ch1 giao ti1p liên quá trình (IPC - Inter-Process Communication). 1.2. PHÂN LO7I C& CH6 GIAO TI6P LIÊN QUÁ TRÌNH § LoΚi 1: CΕ ch1 giao ti1p liên quá trình hΝ trΟ giao ti1p gi9a các quá trình trên cùng m6t máy tính. § LoΚi 2: CΕ ch1 giao ti1p liên quá trình hΝ trΟ giao ti1p gi9a các quá trình nΣm trên các máy tính khác nhau. § ThΤa thu7n vΡi nhau vΓ các qui tΑc trao 5Φi thông tin, g+i các qui tΑc này là các giao th?c (Protocol) Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 3 1.3. MÔ HÌNH OSI (Open Systems Interconnection) 1/ T−ng ?ng dΥng (Application Layer): cung cΩp các ?ng dΥng truy xuΩt 51n các dΞch vΥ mΚng; Web Browser, Web Server,… 2/ T−ng trình bày (Presentation Layer): 5Μm bΜo các máy tính có ki8u 5Ξnh dΚng d9 liΧu khác nhau vΙn có th8 trao 5Φi thông tin cho nhau. 3/ T−ng giao dΞch (Session Layer): cho phép các ?ng dΥng thi1t l7p, sΖ dΥng và xóa các kênh giao ti1p gi9a chúng (5:Οc g+i là giao dΞch). 4/ T−ng v7n chuy8n (Transport Layer): D9 liΧu gΠi 5i 5:Οc 5Μm bΜo không có lΝi, theo 5úng trình t>, không bΞ mΩt mát, trùng lΑp. 5/ T−ng mΚng (Network Layer): tìm 5:Θng 5i cho d9 liΧu 51n các 5ích khác nhau trong hΧ th0ng mΚng. 6/ T−ng liên k1t d9 liΧu (Data-Link Layer): 5Μm bΜo truyΓn tΜi các khung d9 liΧu (Frame) gi9a hai máy tính. 7/ T−ng v7t lý (Physical Layer): ∃iΓu khi8n viΧc truyΓn tΜi th7t s> các bit trên 5:Θng truyΓn v7t lý. Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 4 1.4. M7NG TCP/IP ∃ây là ki1n trúc c[a mΚng Internet (5 t−ng), ch3 g∆m 4 t−ng nh: hình v∴ d:Ρi 5ây và t−ng v7t lý d:Ρi cùng: 1.5. MÔ HÌNH CLIENT/SERVER § Server: chuyên cung cΩp m6t s0 phΥc vΥ nào 5ó, ch]ng hΚn: phΥc vΥ t7p tin, phΥc vΥ máy in, phΥc vΥ th: 5iΧn tΖ, phΥc vΥ Web § Client: yêu c−u sΖ dΥng các dΞch vΥ do các server cung cΩp. Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 5 1.6. BÀI T5P TH8C HÀNH Bài t,p 1.1: Tìm 5+c và vi1t m6t báo cáo không quá 10 trang vΓ giao th?c HTTP. H:Ρng dΙn tham khΜo: - Sinh viên chia thành nhóm <=3 bΚn. - Các nhóm tìm ki1m tài liΧu trên Internet. - Vi1t báo cáo (File word) theo 3 ch:Εng sau: o Ch:Εng 1: GiΡi thiΧu vΓ giao th?c HTTP. o Ch:Εng 2: M6t s0 vΩn 5Γ liên quan 51n giao th?c HTTP. o Ch:Εng 3: K1t lu7n. - Trình bày lΚi báo cáo cho 5úng mΙu, 5⊥p, rõ ràng. - Trang 5−u tiên báo cáo ghi h+ tên các thành viên trong nhóm. - N6p lΚi File báo cáo (file word) vào h6p mail: khuongdx@gmail.com Bài t,p 1.2: Tìm 5+c và vi1t m6t báo cáo không quá 10 trang vΓ giao th?c POP3. H:Ρng dΙn tham khΜo: - T:Εng t> Bài t7p 1.1. Bài t,p 1.3: Tìm hi8u vΓ dΞch vΥ Chat trên mΚng Internet. Vi1t lΚi báo cáo không quá 10 trang trình bày các n6i dung sau: - M6t bΜng mô tΜ các ch?c n_ng th:Θng 5:Οc hΝ trΟ trong m6t dΞch vΥ Chat. - Xây d>ng Chat Protocol riêng c[a bΚn trong 5ó mô tΜ: o Các ch?c n_ng hΝ trΟ bΠi Chat Server. o Khuôn dΚng (Format) và các loΚi thông 5iΧp (Message) hΝ trΟ bΠi Protocol. o SΕ 5∆ trΚng thái hoΚt 56ng c[a server và client (giΜi thu7t). o Minh h+a các kΞch bΜn khác nhau cho tΛng ch?c n_ng c[a dΞch vΥ. Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 6 CH2&NG 2: T3NG QUAN NGÔN NG9 L5P TRÌNH JAVA 2.1. GI%I THI U NGÔN NG9 L5P TRÌNH JAVA Ngôn ng9 l7p trình Java 5:Οc Sun Microsystems 5:a ra giΡi thiΧu vào tháng 6 n_m 1995 và 5ã nhanh chóng trΠ thành m6t ngôn ng9 l7p trình c[a các l7p trình viên chuyên nghiΧp. Java 5:Οc xây d>ng d>a trên nΓn tΜng c[a C và C++ ngha là Java sΖ dΥng cú pháp c[a C và 5αc tr:ng h:Ρng 50i t:Οng c[a C++. Java là ngôn ng9 vΛa biên dΞch vΛa thông dΞch. ∃−u tiên mã ngu∆n 5:Οc biên dΞch thành dΚng bytecode. Sau 5ó 5:Οc th>c thi trên tΛng loΚi máy nhΘ trình thông dΞch. M c tiêu c∀a các nhà thi#t k# Java là cho phép ng&∋i l∗p trình vi#t ch&(ng trình m,t l.n nh&ng có th/ ch1y trên các n2n ph.n c3ng khác nhau. Biên d5ch ch&(ng trình Java. Ngày nay, Java 5:Οc sΖ dΥng r6ng rãi, không ch3 58 vi1t các ?ng dΥng trên máy cΥc b6 hay trên mΚng mà còn 58 xây d>ng các trình 5iΓu khi8n thi1t bΞ di 56ng, … 2.2. B1 JDK VÀ ECLIPSE JDK (Java Development Kit) là b6 công cΥ cho ng:Θi phát tri8n ?ng dΥng bΣng ngôn ng9 l7p trình Java, là m6t t7p hΟp nh9ng công cΥ ph−n mΓm 5:Οc phát tri8n bΠi Sun Microsystems. B6 công cΥ này 5:Οc phát hành miβn phí g∆m có trình biên dΞch, trình thông dΞch, trình giúp sΖa lΝi trình chΚy applet và tài liΧu nghiên c?u. Các bΚn vào 5Ξa ch3 sau 58 tΜi b6 cài 5αt vΓ: http://www.oracle.com/technetwork/java/javase/downloads/index.html Eclipse là m6t ph−n mΓm mã ngu∆n mΠ 5:Οc thi1t k1 58 hΝ trΟ các l7p trình viên vi1t các ?ng dΥng bΣng nhiΓu ngôn ng9 khác nhau trong 5ó có ngôn ng9 Java. Eclipse tΚo ra m6t môi tr:Θng l7p trình 5Εn giΜn, tr>c quan vΡi viΧc hΝ trΟ rΩt nhiΓu plugin (ph−n thêm vào) 58 các l7p trình viên 5Εn giΜn và tiΧn ích hΕn trong viΧc l7p trình. ∃8 cài 5αt Eclipse vào máy tính, 5−u tiên phΜi cài 5αt b6 biên dΞch Java JDK, sau 5ó các bΚn tΜi b6 ngu∆n Eclipse vΓ tΛ Internet vΓ và chΚy ch:Εng trình. Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 7 Các bΚn vào 5Ξa ch3 sau 58 tΜi Eclipse: http://www.eclipse.org/downloads/ 2.3. C;U TRÚC <I4U KHI=N TRONG JAVA 2.3.1. L>nh ?i/u ki>n if-else if (<bi u th∀c %i&u ki∋n>) <l∋nh/ kh∗i l∋nh 1>; else <l∋nh/ kh∗i l∋nh 2>; N1u <bi8u th?c 5iΓu kiΧn> có giá trΞ true thì th>c hiΧn <lΧnh/ kh0i lΧnh 1> c[a if, ng:Οc lΚi thì th>c hiΧn <lΧnh/ kh0i lΧnh 2> c[a else, sau 5ó th>c hiΧn các lΧnh ti1p theo c[a ch:Εng trình. 2.3.2. L>nh l≅a chΒn switch switch (<bi u th∀c nguyên>) { case <giá tr, 1> : <kh∗i l∋nh 1>; [break]; … case <giá tr, n> : <kh∗i l∋nh n>; [break]; [defaulse: <kh∗i l∋nh n>;] } Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 8 2.3.3. Vòng l∆p for for (<kh.i t1o bi3n>; <bi u th∀c %i&u ki∋n>; <b#4c nh5y>) { <thân vòng l6p> // thân vòng l6p là l∋nh / kh∗i l∋nh } 2.3.4. Vòng l∆p while while (<bi u th∀c %i&u ki∋n>) <Thân vòng l6p>; 2.3.5. Vòng l∆p do-while do <thân vòng l6p> while (<bi u th∀c %i&u ki∋n>) 2.4. TÍNH K6 THΦA VÀ <A HÌNH TRONG JAVA 2.4.1. Tính kΓ thΗa S> k1 thΛa 5:Οc sΖ dΥng khi mu0n tΚo m6t lΡp mΡi tΛ m6t lΡp 5ã bi1t. Khi 5ó, tΩt cΜ các thu6c tính và ph:Εng th?c c[a lΡp cχ 5Γu trΠ thành thu6c tính và ph:Εng th?c c[a lΡp mΡi. LΡp cχ 5:Οc g+i là lΡp cha, lΡp mΡi 5:Οc g+i là lΡp con. Khai báo lΙp kΓ thΗa Khai báo lΡp k1 thΛa 5:Οc th>c hiΧn bΠi tΛ khoá extends: <thu8c tính> <tên l4p con> extends <tên l4p cha> { } 2.4.2. Tính ?a hình NΚp chΛng: Java cho phép trong cùng m6t lΡp, có th8 khai báo nhiΓu ph:Εng th?c có cùng tên. NΚp ch∆ng là hiΧn t:Οng các ph:Εng th?c có cùng tên. <a hình: ∃a hình là viΧc triΧu g+i 51n các ph:Εng th?c nΚp ch∆ng c[a 50i t:Οng. Khi m6t ph:Εng th?c nΚp ch∆ng 5:Οc g+i, ch:Εng trình s∴ d>a vào ki8u các tham s0 và ki8u trΜ vΓ 58 g+i ph:Εng th?c c[a 50i t:Οng cho phù hΟp. 2.5. BÀI T5P TH8C HÀNH Bài t,p 2.1: Cài 5αt JDK và Eclipse 58 l7p trình ngôn ng9 Java: Bài t p: “L p trình truy#n thông” Biên so#n: ThS. Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 9 Cài ?∆t JDK: Các bΚn vào 5Ξa ch3 sau 58 tΜi b6 cài 5αt vΓ: http://www.oracle.com/technetwork/java/javase/downloads/index.html [...]... - Gõ tên Baitap2.4 vào mΥc Project Name Ch+n Next, Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.4 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp - Gõ tên lΡp là Baitap2_4 vào mΥc Name, 5ánh dΩu ch+n vào public static void main (String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp - Ch+n Finish - Vi1t lΧnh cho ch:Εng trình nh: sau: im port java.util.Scanner; publ i c c l as s Baitap2_4 {... dΥng lΧnh if else) Bài gi7i: - KhΠi 56ng Eclipse - Ch+n File / New/ Java Project 58 tΚo d> án mΡi Ch+n Next - Gõ tên Baitap2.2 vào mΥc Project Name Ch+n Next, Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.2 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp - Gõ tên lΡp là Baitap2_2 vào mΥc Name, 5ánh dΩu ch+n vào public static void main (String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp - Ch+n... mΜng và hi8n thΞ Bài gi7i: - KhΠi 56ng Eclipse - Ch+n File / New/ Java Project 58 tΚo d> án mΡi Ch+n Next - Gõ tên Baitap2.5 vào mΥc Project Name Ch+n Next, Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.5 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp - Gõ tên lΡp là Baitap2_5 vào mΥc Name, 5ánh dΩu ch+n vào public static void main (String[] args) 58 tΚo ph:Εng th?c chính c[a lΡp - Ch+n... tên Baitap2.3 vào mΥc Project Name Ch+n Next, Ch+n Finish Biên so#n: ThS Nguy∃n V∋n Kh)∗ng – MB: 0905.065317 Trang 12 Bài t p: “L p trình truy#n thông” - Click chu6t phΜi vào d> án: Baitap2.3 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp - Gõ tên lΡp là Baitap2_3... l ; i nt dem=1; / /Thuc hien nhap ten, matkhau toi da 3 lan whi l e(dem án mΡi Ch+n Next - Gõ tên Baitap2.6 vào mΥc Project Name Ch+n Next, Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.6 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp - Gõ tên lΡp là Sach vào mΥc Name Ch+n Finish - Vi1t lΧnh cho lΡp Sach nh: sau: //Khai bao... trình truy#n thông” - KhΠi 56ng Eclipse - Ch+n File / New/ Java Project 58 tΚo d> án mΡi - Gõ tên Baitap2.7 vào mΥc Project Name Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.7 phía bên trái cΖa sΦ làm viΧc, ch+n New / Other / WindowBuider / Swing Designer / Application Window, ch+n Next 58 tΚo ?ng dΥng Window - Gõ tên là PTB1 vào... 2.8: Vi1t ch:Εng trình giΜi ph:Εng trình b7c 2 nh: hình bên d:Ρi: H:Ρng dΙn tham khΜo: - KhΠi 56ng Eclipse Ch+n File / New/ Java Project 58 tΚo d> án mΡi - Gõ tên Baitap2.8 vào mΥc Project Name Ch+n Finish - Click chu6t phΜi vào d> án: Baitap2.8 phía bên trái cΖa sΦ làm viΧc, ch+n New / Other / WindowBuider / Swing Designer / Application Window, ch+n Next 58 tΚo ?ng dΥng Window - Gõ tên là PTB2 vào . d> án mΡi. Ch+n Next - Gõ tên Baitap2.2 vào mΥc Project Name. Ch+n Next, Ch+n Finish. - Click chu6t phΜi vào d> án: Baitap2.2 phía bên trái cΖa sΦ làm. Click chu6t phΜi vào d> án: Baitap2.3 phía bên trái cΖa sΦ làm viΧc, ch+n New / Class 58 tΚo lΡp. - Gõ tên lΡp là Baitap2_3 vào mΥc Name, 5ánh dΩu