bài giảng lập trình mạng

119 212 0
bài giảng 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

Bài giảng Lập trình Mạng L I NÓI Đ U Ngày nay, việc viết ứng dụng để chạy máy đơn cục không ưa chuộng thích hợp Các chương trình ứng dụng đại phải tích hợp triệu gọi lẫn mạng Intranet (mạng cục bộ), mạng Internet (mạng toàn cầu) ngôn ngữ lập trình Java lựa chọn tốt để làm việc Java ngôn ngữ lập trình không đơn giản, tiếng thân ngôn ngữ, tảng Java hướng đến ứng dụng mạng như: giao tiếp mạng theo mô hình khách/chủ (client/server) … So với lập trình thông thường, lập trình mạng đòi hỏi người lập trình hiểu biết kỹ chuyên sâu để tạo giao tiếp trao đổi liệu máy tính với Để giúp sinh viên chuyên ngành CNTT Nhà trường tiếp cận với kỹ thuật này, mạnh dạn soạn thảo “Bài giảng Lập trình mạng” để đưa vào giảng dạy cho sinh viên CNTT học năm thứ Nhà trường Cuốn giảng soạn thảo dựa tảng sinh viên CNTT sau năm học đầu trường trang bị đầy đủ kiến thức Ngôn ngữ lập trình hướng đối tượng, Mạng máy tính, Thiết kế Web Đây môn học với đặc thù kiến thức đổi cập nhật, yêu cầu với môn học sinh viên phải tự đọc thêm tài liệu, giáo viên người hướng dẫn vấn đề cho sinh viên Lập trình mạng môn học đưa vào giảng dạy, nên trình soạn thảo giảng không tránh khỏi bỡ ngỡ thiếu sót Chúng mong giúp đỡ, đóng góp ý kiến đồng nghiệp độc giả quan tâm để lần tái sau sách hoàn thiện Mọi ý kiến đóng góp gửi theo địa email: qtmcn1@yahoo.com Chúng xin chân thành cảm ơn! Hà Nội 12/2005 Các tác giả Trang Bài giảng Lập trình Mạng M CL C L I NÓI Đ U M C L C PH N 1: T NG QUAN V L P TRÌNH M NG I Các giao thức mạng .5 I.1 I.2 I.3 II Họ giao thức TCP/IP Giao thức TCP UDP Dịch v từ phía máy ch khái ni m c ng (PORT) Giao tiếp mạng theo mô hình khách/chủ (Client/Server) khái niệm socket II.1 II.2 II.3 Giao ti p theo mô hình khách/ch (Client/Server) .8 L p trình m ng thông qua Socket Tìm hiểu số lớp c n thi t c a gói th vi n Java.net PH N 2: NGÔN NG L P TRÌNH JAVA .15 CH NG 1: T NG QUAN V JAVA 15 I Lịch sử Java .15 II Java gì? 16 III Cấu trúc Java 16 IV Các đặc tính Java 18 IV.1 IV.2 IV.3 IV.4 IV.5 IV.6 IV.7 An ninh 18 Giao di n l p trình ứng d ng chuẩn - Core API 19 T ng thích với nhi u kiểu ph n cứng 19 Đặc tính động phân tán 19 H ớng đối t ợng 19 Đa lu ng (multi-threads) .20 Qu n lý nhớ trình thu dọn 'rác' .20 CH NG 2: CÁC THÀNH PH N C B N C A NGÔN NG L P TRÌNH JAVA .22 I Ghi (Comment) .22 II Câu lệnh khối lệnh .23 II.1 II.2 III IV Câu l nh .23 Khối l nh 24 Tập ký tự dùng JAVA 24 Từ khóa tên 25 IV.1 IV.2 V Tên 25 Từ khóa .25 Kiểu liệu 25 V.1 V.2 V.3 VI VII Kiểu d li u c b n 26 Kiểu d li u d n xu t (Reference) 26 Giá trị mặc định 26 Hằng (literal) 27 Biến 27 VII.1 Kiểu bi n .28 VII.1.1 Bi n đối t ợng 28 VII.1.2 Bi n lớp 28 VII.1.3 Bi n c c .28 VII.1.4 Ph m vi c a bi n 29 VIII IX Chuyển đổi kiểu liệu .29 Biểu thức Toán tử .30 IX.1 IX.2 IX.3 IX.4 IX.5 IX.6 IX.7 IX.8 IX.9 IX.10 X Các toán t số học: 30 Các phép toán tăng gi m .2 Toán t quan h u ki n Toán t lu n lý Các toán t làm vi c với bit Toán t gán 33 Một số toán t khác 33 Phép toán kiểu chuối ( String) .34 Độ u tiên toán t 34 Biểu thức .35 Các câu lệnh điều khiển 35 Trang Bài giảng Lập trình Mạng X.1 C u trúc rẽ nhánh .35 X.1.1 C u trúc u ki n rẽ nhánh if 35 X.1.2 C u trúc u ki n rẽ nhánh phức : switch 36 X.2 C u trúc lặp 38 X.2.1 Vòng lặp for 38 X.2.2 Vòng lặp while do: 39 X.3 Ngo i l câu l nh nắm bắt ngo i l .41 CH NG 3: APPLETS 43 I Đại cương HTML 43 II Tổng quan applet 43 II.1 Ví d v Applet 43 II.2 Vòng đ i c a Applet 44 II.2.1 N p Applet 44 II.2.2 R i khỏi quay tr v trang web chứa applet 45 II.2.3 N p l i Applet (Reloading the Applet) 45 II.2.4 Thoát khỏi trình t .45 II.2.5 Tóm tắt 45 II.3 Các ph ng thức c b n 46 II.3.1 init() 46 II.3.2 start() 46 II.3.3 stop() 46 II.3.4 destroy() 46 II.4 Các ph ng thức vẽ nắm bắt ki n 47 II.5 Các ph ng thức cho l p trình giao di n ng i dùng 47 II.5.1 Các thành ph n UI xây dựng sẵn .47 II.5.2 Các ph ng thức để s d ng thành ph n UI Applet 48 II.5.3 Thêm Text Field không edit đ ợc vào applet Simple 48 II.6 Giới h n c a Applet 49 II.6.1 Giới h n v b o m t 49 II.6.2 Các kh c a Applet 50 II.7 Test applet 50 III Các tính cao cấp Applet API 51 III.1 III.2 III.3 III.4 III.5 III.6 III.7 III.7.1 III.7.2 Tìm ki m n p file d li u 52 Hiển thị chu i tình tr ng ngắn 52 Hiển thị tài li u trình t 53 G i thông p tới applet khác .54 Tìm applet tên: s d ng ph ng thức getApplet 55 Tìm t t c applet trang: s d ng ph ng thức getApplets 59 Đan xen vào trang Web 60 Các thuộc tính (Attributes) .61 Các thông số c a applet .61 CH NG 4: CÁC GÓI & GIAO DI N 63 I Giới thiệu 63 II Các giao diện 63 II.1.Các b ớc để t o giao di n 63 II.2.Hi n thực giao di n 64 III Các gói 66 III.1.T o gói .68 III.2.Thi t l p đ ng d n cho lớp (classpath) 70 IV Gói điều khiển truy xuất 72 IV.1 Gói java.lang 73 IV.1.1.Lớp String (lớp chuỗi) 74 IV.1.2.Chuỗi mặc định (String pool) 75 IV.1.3.Các ph ng thức c a lớp String 76 IV.1.4.Lớp StringBuffer 78 IV.1.5.Các ph ng thức lớp StringBuffer 80 IV.1.5.Lớp java.lang.Math .82 IV.1.6.Lớp Runtime (Th i gian thực hi n ch ng trình) 84 IV.1.7.Lớp System .85 IV.1.8.Lớp Class 87 IV.1.9.Lớp Object 88 IV.2 Gói java.util 89 IV.2.1.Lớp Hashtable (b ng băm) 90 IV.2.2.Lớp random 93 IV.2.3.Lớp Vector 94 IV.2.4.Lớp StringTokenizer .97 Trang Bài giảng Lập trình Mạng PH N 3: L P TRÌNH SOCKET 102 NG 1: L P TRÌNH TCP SOCKET 102 Xây dựng chương trình EchoServer 102 Xây dựng chương trình EchoClient 103 NG 2: L P TRÌNH UDP SOCKET 105 Xây dựng chương trình ExchangeRateServer 105 Xây dựng chương trình ExchangeRateTable 106 CH I II CH I II PH N 4: L P TRÌNH TRÊN INTERNET 109 NG 1: JSP VÀ CÁC KHÁI NI M M Đ U 110 Các chế hoạt động trang JSP 110 Xây dựng trang JSP 110 NG 2: CÁC CÚ PHÁP C B N C A JSP 112 Các đối tượng mặc định JSP 112 Các thẻ lệnh JSP 112 CH I II CH I II II.1 II.2 II.3 II.4 II.5 III Thẻ bọc mã 112 Thẻ hiển thị k t xu t 113 Thẻ d n biên dịch trang 114 Chèn thích vào mã trang JSP 114 Khai báo ph ng thức bi n 116 Truy xuất sở liệu trang JSP .116 TÀI LI U THAM KH O .119 Trang Bài giảng Lập trình Mạng Ph n 1: T ng quan v l p trình m ng I.Các giao thức m ng I.1.Họ giao thức TCP/IP Để hai hay nhi u máy giao ti p đ ợc với nhau, chúng ph i dùng ngôn ng chung: chẳng h n máy ph i g i nh ng tín hi u đ n máy máy ph i g i tr l i nh ng tín hi u để nh n bi t Trên Internet ngày vi c hai máy trao đ i đ ợc với đa số đ u dựa theo quy ớc hay giao thức cốt lõi TCP/IP (Transmission Control Protocol/ Internet Protocol) Theo giao thức này, máy đ ợc đặt cho số riêng bi t gọi địa IP (IP address) có vai trò t ng tự số n tho i, chẳng h n máy tính có tên www.microsoft.com có địa IP 207.46.230.219 Các số IP nh t không máy đ ợc trùng (trên toàn th giới) Khi b n muốn máy c a có địa IP để tham gia vào h thống Internet toàn c u nh máy ch (host hay server) ta ph i đăng ký với t chức quốc t InterNIC (Internet Network Information Center) để nh n đ ợc số IP riêng bi t V y t i vừa có địa IP l i vừa có tên riêng cho máy? Dùng để xác định liên l c với máy ch (nh trên, ta nên dùng www.microsoft.com hay số 207.46.230.219 để k t nối với máy ch c a công ty Microsoft) Th t tên địa IP một, nh ng địa IP đ ợc ghi số, tên c a máy ch l i đ ợc ghi ch có ý nghĩa g n gũi h n với ng i Với h thống đ u có chuyển đ i trực ti p từ tên vùng thành địa IP thích hợp tr ớc d li u đ ợc g i Ví d Windows tham kh o hai t p tin HOSTS LMHOSTS hai t p tin văn b n (đ ợc coi nh c s d li u) để l u tr t p hợp số IP với tên t ng ứng Ta tự thêm vào địa IP tên máy ch cách kho ng trắng Khi có nhu c u truy c p đ n máy địa IP t xa qua giao thức m ng TCP/IP n u gõ vào tên máy ch h thống tự tìm ng ứng t p tin này: T p tin HOSTS 216.32.74.52 www.myyahoo.com 164.71.2.70 www.fujitsu.com Tên c a máy ch đ ợc gọi tên vùng (domain name) b i chúng đ ợc đặt theo thứ tự phân c p c a tên lãnh th , vùng, t chức, hay tên cá nhân nhóm phân c p cách b i d u ch m (.) Công vi c theo dõi thay đ i tên đ ợc phân phối qua Internet nh máy ch lớn DNS (Domain Name System) theo dõi máy ch khác vùng c a chúng Trang Bài giảng Lập trình Mạng Tr ớc máy tự l u tr t p tin chứa ph n lớn tên địa c a nh ng máy ch thông d ng (nh Windows t p tin HOSTS LMHOSTS), nh ng ngày ta không làm nh v y n a mà đa số tên vùng nh địa IP đ ợc l y xuống từ máy ch DNS Khi đọc tên vùng c a máy ch ta từ trái qua ph i Ví d : Java.sun.com tên máy tính tên t chức tên vùng Nói chung theo quy ớc từ ph n riêng bi t nh t đ n ph n chung nh t Tuy nhiên không bắt buộc nh v y, ta v n đặt tên theo cách khác, không nh t thi t g m hay nhóm (ví d : here.is.along.name.address.co.vn hợp l ) b i cuối tên vùng đ ợc h thống DNS chuyển thành địa IP mà I.2.Giao thức TCP UDP Quá trình chuyển d li u m ng phức t p Chi ti t trình di n t nh thực t ta g i th hay b u phẩm, tr ớc h t ph i ghi rõ địa n i đ n (tr ng tự ng hợp địa IP c a máy ch ), sau g i thông th ng g i b o đ m (tùy theo cách g i mà th hay b u phẩm có chắn đ n đ ợc tay ng i nh n hay không), ng i nh n sau nh n đ ợc h i âm tr l i nh n đ bị m t mát trình chuyển t i Ng i g i g i ti p nh ng ph n bị m t (hoặc không c n g i n a) Cách chuyển d li u b o đ m dựa vào giao thức TCP (Transmission Control Protocol), cách truy n không đ m b o dựa vào giao thức UDP (User Datagram Protocol) Giao thức TCP g i gói d li u đi, n i nh n theo giao thức ph i có trách nhi m thông báo kiểm tra xem d li u đ n đ hay ch a, có lỗi hay lỗi Tr ớc chuyển d li u bao gi có k t nối gi a máy g i máy nh n Do ph i đ m b o d li u đ ợc truy n xác trì k t nối nên s d ng giao thức TCP c n chi m thêm số tài nguyên c a h thống cách l p trình cho giao thức h i khó (ph i thực hi n b ớc kiểm tra d li u theo yêu c u c a TCP) Truy n d li u theo TC th ng áp d ng cho dịch v nh truy n t p tin, dịch v trực n Internet đòi hỏi độ tin c y cao … Giao thức UDP ng ợc l i không đáng tin c y lắm, k t nối tr ớc gi a n i g i n i nh n, d li u g i mặc định máy tính đ u nh n tr ng thái sẵn sàng để ti p Trang Bài giảng Lập trình Mạng đón d li u g i đ n N u d li u g i đ n bị lỗi trình truy n hay không nh n đ ợc đ y đ giao thức UDP thông tin ph n h i l i cho n i g i Tuy nhiên UDP không đòi hỏi xác cao nh dịch v thông báo gi , tỉ giá hay dịch v g i nhắn tin … I.3.Dịch v từ phía máy chủ khái ni m c ng (PORT) Ta k t nối vào Internet thông qua dịch v c a nhà cung c p gọi ISP (nh FPT, Cnet ) đ ng n tho i thông qua modem Các nhà dịch v đóng vai trò nh nh ng máy ch (server) giúp d dàng truy c p d li u từ nh ng vùng khác m ng Khi k t nối vào máy ch ta yêu c u máy ch nhi u dịch v khác nhau, nh dịch v truy tìm đọc trang Web Internet, dịch v g i nh n e-mail, dịch v dò tìm h thống tên vùng DNS Mỗi dịch v đ u có cách g i nh n d li u theo quy ớc riêng TCP UDP chịu trách nhi m đ a d li u từ máy tính đ n máy tính khác, d li u đ ợc g i cho dịch v ph i thông qua dịch v n a gọi c ng (hay port) Mỗi ch s d ng c ng khác để truy xu t thông tin C ng số nguyên d ng trình dịch v ng có giá trị từ đ n 16383 Máy ch (server) quy định c ng đ ợc s d ng cho lo i dịch v Thông tin gi a máy khách (client) máy ch (server) ph i s d ng c ng t Tuy nhiên, h u h t ch ng ứng trao đ i đ ợc với ng trình dịch v n i ti ng hi n đ u có quy định chuẩn c ng dành riêng cho nh : Dịch v c ng (port) FTP21 HTTP80 Telnet23 Finger79 SMTP25 N u tự xây dựng ứng d ng làm dịch v máy ch ta ph i chọn cho số c ng có giá trị khác với nh ng giá trị c ng mà nh ng dịch v n i ti ng khác s d ng Trang Bài giảng Lập trình Mạng II.Giao ti p m ng theo mô hình khách/chủ (Client/Server) khái ni m socket II.1.Giao ti p theo mô hình khách/chủ (Client/Server) Có r t nhi u dịch v hỗ trợ Internet nh e-mail, nhóm tin (newsgroup), chuyển t p tin (file transfer), đăng nh p từ xa (remote login), truy tìm trang Web Nh ng dịch v đ ợc t chức ki n trúc theo mô hình khách/ch (mô hình Client/Server) Các ch khách (client) nh trình t (Web Browser) hay ch (connection) với máy ch ng trình máy ng trình g i nh n e-mail t o k t nối xa (server) sau g i yêu c u đ n máy ch , ch ng trình dich v máy ch nh Web server hay Mail server x lý nh ng yêu c u g i k t qu ng ợc v cho máy khách (chẳng h n Web theo địa mà máy khách đ a đ n Mail server l u gi g i v cho máy khách nh ng e-mail mới) Thông th ng dịch v máy ch ph c v cho r t nhi u khách II.2.L p trình m ng thông qua Socket Nh v y tr ớc yêu c u dịch v máy ch thực hi n u đó, máy khách (client) ph i có kh k t nối đ ợc với máy ch Quá trình k t nối đ ợc Java thực hi n thông qua c ch trừu t ợng hóa gọi Socket (t m gọi “c ch khách máy ch t ng tự nh vi c cắm phích n vào nh phích cắm n máy ch đ ợc coi nh cắm”) K t nối gi a máy cắm n Máy khách th cắm n, ng đ ợc coi cắm cắm vào nhi u phích n khác nh máy ch k t nối ph c v cho r t nhi u máy khách N u k t nối socket thành công máy khách máy ch trao đ i d li u với thực hi n yêu c u v dịch v máy ch Vi c k t nối theo c ch socket c n bi t hai thông tin ch y u địa c a máy c n k t nối số hi u c ng c a ch c p lớp Socket (th (th ng trình dịch v Java cung ng đ ợc dùng nh “phich cắm n” cho máy khách) lớp ServerSocket ng đ ợc dùng nh “ cắm n” đặt máy ch ) Hai lớp đ ợc đặt gói th vi n Java.net II.3.Tìm hiểu số l p c n thi t gói th vi n Java.net a L p InetAddress Vì địa Internet theo số IP theo tên r t th ng dùng k t nối vào m ng Java xây dựng hẳn lớp InetAddress dành riêng cho vi c qu n lý địa theo tên theo số Lớp InetAddress cung c p ph ng thức static thông d ng nh t dùng để chuyển đ i truy xu t Trang Bài giảng Lập trình Mạng địa IP (không có ph ph • ng thức kh i dựng cho lớp này) Th ng ta quan tâm đ n ng thức sau: public static InetAddress getLocalHost () throws UnknownHostExceptiongetByName Tr v đối t ợng InetAddress địa c a máy c c (local host) • public static InetAddress getByName (String host) throws UnknownHostException Ph ng thức nh n địa c a máy kiểu chuỗi String tr v đối t ợng kiểu InetAddress thay mặt cho địa máy • public static InetAddress[] getAllByName (String host) throws UnknownHostException Ph ng thức nh n địa c a máy kiểu chuỗi tr v t t c đối t ợng InetAddress thay mặt cho địa máy • public byte[] getAddress() Tr v địa IP c a đối t ợng InetAddress d ới d ng dãy byte Vị trí byte cao nh t nằm • byte public String getHostAddress() Tr v địa IP c a đối t ợng InetAddress d ới d ng chuỗi đ ợc dịnh d ng phân làm nhóm %d.%d.%d.%d (Ví d : “172.16.11.12”) D ới ví d cho th y cách dùng lớp InetAddress để l y v thông tin c a địa máy ch : Ví d 1-0 AddrLookupApp.java import java.net b L p Socket Lớp Socket dùng t o k t nối từ phía khách với máy ch th ph • ng đ ợc kh i dựng ng thức sau: public Socket (String host, int port) throws UnknownHostException, IOException T o socket để k t nối máy có tên theo địa host số c ng port • public Socket(InetAddress address, int port) throws IOException T o socket k t nối địa đối t ợng InetAddress số c ng port Trang Bài giảng Lập trình Mạng • Public Socket(String host, int port, boolean stream) throws IOException T o socket k t nối theo địa host số c ng port tham số stream cuối để quy định k t nối theo TCP (stream=true) hay UDP (stream=false) Tuy nhiên n u áp d ng để t o socket cho giao thức UDP nên s d ng lớp thay th DatagramSocket Các ph • ng thức khác hỗ trợ cho lớp Socket từ phía máy khách bao g m: InputStream get InputStream() throws IOException L y v lu ng nh p để máy khách nh p d li u tr v từ phía máy ch • OutputStream get OutputStream() throws IOException L y v lu ng xu t để máy khách ghi d li u g i đ n máy ch • InetAddress get InetAddress() L y địa k t nối socket c a máy ch • int getPort() L y v số c ng dùng k t nối c a máy ch Ví d đo n mã sau thực hi n k t nối với máy ch có địa “my.testing.server” m hai lu ng xu t nh p để đọc g i thông tin đ n máy ch theo số c ng 1234 try{ Socket me=new Socket(“my.testing.server”, 1234); // Luồng nhập thông tin để trả máy chủ từ phía kết nối DataInputstream in = new DataInputStream(me.getInputStream()); // Luồng xuất để ghi thông tin gửi đến máy chủ DataOutputStream out = new DataOutputStream(me.getOutputStream()); Catch (Exception e) { System.out.println(e); } c L p ServerSocket Lớp ServerSocket dùng t o k t nối từ phía máy ch với máy khách Đối t ợng ServerSocket đ ợc t o máy ch lắng nghe nh ng k t nối từ phía máy khách g i đ n theo số c ng địng tr ớc Đối t ợng ServerSocket đ ợc kh i dựng từ ph • ng thức sau: public ServerSocket(int port) throws IOException port số hi u c ng mà đối t ợng ServerSocket ph i lắng nghe để nh n bi t nh ng k t nối từ phía máy khách g i đ n Để ch đợi k t nối từ máy khách g i đ n đối t ợng ServerSocket th ng nh đ n ph ng thức accept nh sau: • Socket accept () throws IOException Trang 10 Bài giảng Lập trình Mạng CH NG 2: L p trình UDP Socket Trên cách k t nối truy n d li u m ng theo giao thức TCP Nh đ c p, truy n d li u theo giao thức UDP không xác đ m b o TCP nh ng bù l i không đòi hỏi nhi u tài nguyên c a h thống, trình x lý ti p nh n d li u đ n gi n h n nhi u D li u g i theo giao thức UDP th ng đ ợc đóng thành gói (data package) bao g m địa IP c a máy nh n, số c ng với d li u th t UDP đ ợc dùng ứng d ng mang tính ch t thông báo nh v giá c , th i ti t … D ới ta xây dựng mô hình ứng d ng khách/ch (client/server) s d ng lớp DatagramSocket DatagramPackage để k t nối trao đ i thông tin gi a máy khách máy ch giao thức UDP I.Xây dựng ch ng trình ExchangeRateServer ExchangeRateServer ch y máy ch đón nh n nh ng d li u máy khách g i đ n c ng 2345 Khi nh n đ ợc yêu c u máy ch g i tr thông báo v tỉ giá kèm theo ngày gi nh t v cho máy khách Ta s d ng hàm random c a lớp Math để l y v tỷ giá mang tính ch t ng u nhiên c a thị tr ng Tokyo, NewYork HongKong D li u đ ợc nh n g i theo gói dựa vào lớp DatagramPackage Ch ng trình ch y máy ch cung c p tỷ giá c a thị tr ng chứng khoán Ví d 2.1: ExchangeRateServer.java import java.io.*; import java.net.*; import java.util.*; public class ExchangeRateServer { public static void main (String args[]) { try { DatagramSocket socket = new DatagramSocket (2345); String localAddress = InetAddress.getLocalHost().getHostName().trim(); int localPort = socket.getLocalPort(); System.out.println (localAddress+ ": " ); System.out.println ("Exchange Rate Server is listening on port " +localPort +"."); int bufferLength = 256; byte outBuffer[]; byte inBuffer[] = new byte[bufferLength]; Trang 105 Bài giảng Lập trình Mạng DatagramPackage inDatagram = new DatagramPackage (inBuffer, inBuffer.length); boolean finished = false; { socket.received (inDatagram); InetAddress destAddress = inDatagram.getAddress(); String destHost = destAddress.getHostName().trim(); int destPort = inDatagram.getPort(); System.out.println ("\n Received a datagram from "+destHost" at port "+destPort+"."); if (data.equalsIgnoreCase("quit")) finished = true; String s = new Date().toString(); s=s+"\n NewYork :"+getNewYorkRate(); s=s+"\n Tokyo :"+getTokyoRate(); s=s+"\n HongKong :"+getHongKongRate(); outBuffer = s.getBytes(); outDatagram = new DatagramPackage (outBuffer, outBuffer.length, destAddress, destPort); socket.send (outDatagram); System.out.println (“Sent “+s+” to “+destHost+” at port “+destPort+”.”); } while (!finished); }catch (IOException ex){ System.out.println (“IOException occurred.”); } } private static String getNewYorkRate () { return Double.toString (Math.random() * 135); } private static String getTokyoRate () { return Double.toString (Math.random() * 135); } private static String getHongKongRate () { return Double.toString (Math.random() * 135); } } Biên dịch ch Ch ng trình: javac ExchangeRateServer.java ng trình ExchangeRateServer đ ợc s d ng ta thi t k xong ch ng trình ExchangeRateTable dùng cho máy khách II.Xây dựng ch ng trình ExchangeRateTable ExchangeRateTable ch y máy khách, chịu trách nhi m giây g i yêu c u đ n máy ch để c p nh t thông tin v tỉ giá c a thị tr ch ng chứng khoán Để đ t đ ợc m c tiêu ng trình c a ta ph i xây dựng lớp: Trang 106 Bài giảng Lập trình Mạng • Lớp ExchangeRateTable Là lớp ch ng trình dùng t o c a s trình bày tỷ giá c a thị tr ng chứng khoán vùng b n TextArea • Lớp ExchangeThread Đây phân n ch y song song với ch ng trình chịu trách nhi m giây g i yêu c u đ n máy ch l y số li u v c p nh t • Lớp ExchangeData Là lớp thực hi n k t nối với máy ch , lớp thực cài đặt ph ng thức getRates dùng để g i yêu c u nh n d li u tr v từ máy ch Ví d 2.2: ExchangeRateTable.java import java.io.*; import java.awt.*; import java.awt.event.*; import java.net.*; public class ExchangeRateTable { public static void main (String args[]) { Frame myWindow = new Frame("Stock Exchange Application"); TextArea rateTable = new TextArea("Wait "); Label rateLabel = new Label("Exchange Rate Table"); rateTable.setBounds(new Rectangle(16,33,240,100)); rateLabel.setBounds(new Rectangle(16,6,158,21)); myWindow.setLayout(null); myWindow.add(rateTable, null); myWindow.add(rateLabel,null); myWindow.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent event){ System.exit(0); } }); myWindow.setSize(new Dimension(300,150)); myWindow.show(); ExchangeThread exRate = new ExchangeThread(rateTable); exRate.start(); } } Trang 107 Bài giảng Lập trình Mạng class ExchangeThread extends Thread { TextArea rateTable; ExchangeData rate = new ExchangeData(); public ExchangeThread(TextArea rateTable){ this.rateTable = rateTable; } public void run(){ while (true) { String data = rate.getRates(); rateTable.setText(data); delay(1000); } } private void delay(int miliSeconds){ try { this.sleep(miliSeconds); } catch (Exception e) { System.out.println("Sleep error!"); } } } class ExchangeData { DatagramSocket socket; InetAddress serverAddress; String localHost; int bufferLength = 256; byte inBuffer[] = new byte[bufferLength]; byte outBuffer[]; DatagramPacket outDatagram; DatagramPacket inDatagram; public ExchangeData(){ try { socket = new DatagramSocket(); inDatagram = new DatagramPacket(inBuffer, inBuffer.length); Trang 108 Bài giảng Lập trình Mạng serverAddress = InetAddress.getByName("my.testing.server"); } catch (Exception e) { System.out.println("Connect error!"); } } public String getRates(){ String data=""; try { outBuffer = new byte[bufferLength]; outBuffer = "rate".getBytes(); outDatagram = new DatagramPacket(outBuffer, outBuffer.length, serverAddress, 2345); socket.send(outDatagram); socket.received(inDatagram); InetAddress destAddress = inDatagram.getAddress(); String destHost = destAddress.getHostName().trim(); int destPort = inDatagram.getPort(); data = new String(inDatagram.getData()); data = data.trim(); } catch (IOException ex) { System.out.println("IOException occurred."); } return data; } } Biên dịch ch ng trình: javac ExchangeRateTable.java Ch y ch ng trình t ng tự khi ch y ch ng trình EchoServer EchoClient Ph n 4: CH L p trình Internet NG 1: Trang 109 Bài giảng Lập trình Mạng JSP khái ni m mở đ u I.Các c ch ho t động trang JSP ch ch ng tr ớc học v Servlet Servlet cách thay th cho ng trình CGI c điển ngôn ng l p trình công ngh Java Tuy nhiên, servlet mặt đòi hỏi b n ph i có ki n thức l p trình Java, s d ng thành th o trình biên dịch javac để biên dịch servlet t p tin class Đăng ký servlet với trình ch Web tr ớc s d ng JSP (Java Server Page) cách đ n gi n h n n a để ng i dùng (nh t l p trình viên Java không chuyên) ti p c n đ ợc h ớng l p trình Web phía máy ch hi u qu nhanh h n N u b n ch a bi t t đáp ứng nhu c u ng ng t n Java hay servlet b n v n thi t k đ ợc ứng d ng Web i dùng phía trình khách thông qua trang JSP Servlet đ a mã HTML vào l nh Java ng ợc l i JSP đ a l nh Java vào mã (hay thẻ) HTML T ng tự trang SHTML chứa thẻ đ ợc trình ch thông dịch tr ớc tr k t xu t v cho máy khách Các trang JSP chứa thẻ đặc bi t quy định g n giống thẻ c a ngôn ng HTML Khi b n yêu c u trang JSP , trình ch đọc trang JSP từ đĩa cứng, di n dịch JSP (JSP Page Compiler) di n dịch mã l nh Java chứa trang JSP thành servlet Sau trình ch Java Web Server tri u gọi servlet tr k t xu t thu n HTML v cho trình khách C ch ho t động c a trang JSP đ ợc minh họa nh hình d ới < Web Browser Trình di n dịch JSP Yêu c u Servlet t m K t xu t Trang JSP HTTP Service JAVA WEB SERVER Cơ chế triệu gọi trang JSP II.Xây dựng trang JSP D ới minh họa cách vi t mã l nh Java trang JSP Ví d 1-1: FirstPage.jsp Trang 110 Bài giảng Lập trình Mạng Hello JSP! 0;i ){ out.println("Hello"); } %> Chúng ta s d ng trình so n th o Notepad c a Windows, EditPlus, UltraEdit … để t o file FirstPage.jsp Để ch y đ ợc file FirstPage.jsp c n đ n trình ch Web server hiểu di n dịch đ ợc JSP/Servlet Hi n có r t nhi u trình ch có kh nh : TomCat, Java Web Server, Jrun, WebLogic … Tuy nhiên cách cài đặt c u hình trình ch r t khác bi t, s d ng trình ch Jrun 3.1 Đây trình ch Web server hỗ trợ r t nhi u công ngh Java, có c u hình đ n gi n, ch y đ ợc h u h t h u hành Unix, Linux, Windows Tốc độ thông dịch trang JSP c a trình ch JSP nhanh hi u qu , giao di n đẹp Với Jrun, gọi th m c cài đặt trình ch Files/Allaire/JRun), chép [JRUN_HOME] (th file ng th FirstPage.jsp m c C:/Program vào th m c [JRUN_HOME]/servers/default/default-app Sau kh i t o dịch v Web c a trình ch Jrun ho t động c ng 8100 (kh i t o trình cài đặt JRun), trang FirstPage.jsp đ ợc tri u gọi từ trình t phía máy khách theo địa URL nh sau: http://localhost:8100/FirstPage.jsp, k t qu đ ợc hi n thị trình t Trang 111 Bài giảng Lập trình Mạng CH NG 2: Các cú pháp c b n JSP I.Các đối t ng mặc định JSP Trình di n dịch JSp cho phép b n s d ng số đối t ợng khai báo tr ớc Đi u giúp b n vi t mã l nh trang JSP nhanh h n servlet • Đối t ợng out: xu t phát từ lớp PrintWriter B n s d ng đối t ợng để định d ng k t xu t g i v máy khách Ví d : • Đối t ợng request: xu t phát từ lớp HttpServletRequest, đối t ợng giúp b n l y v tham số hay d li u trình khách chuyển lên • Đối t ợng response: t ng tự đối t ợng out, đối t ợng response dùng để đ a k t xu t tr v trình khách Tuy nhiên đối t ợng out đ ợc dùng th ng xuyên h n • Đối t ợng session: xu t phát từ lớp HttpSession, s d ng đối t ợng session để theo dõi k t nối l u v t phiên làm vi c gi a trình khách trình ch II.Các thẻ l nh JSP II.1.Thẻ bọc mã u điểm c a JSP kh nhúng mã Java gi a thẻ định d ng HTML, t ng tự nh thẻ HTML thẻ l nh JSP bao g m thẻ m thẻ đóng, thẻ có thuộc tính quy định cách s d ng thẻ đặc tr ng Trong ví d 1-1 mã Java đ ợc đặt cặp d u Mặt khác b n s d ng l nh u khiển if else c a mã Java để quy định k t xu t HTML thích hợp theo cách sau: Ví d 2-1: %> III.Truy xu t c sở d li u trang JSP Thực trang JSP không khác servlet B n d dàng dùng trình JDBC để truy xu t c s d li u c a h nh Access, SQL server D ới ví d truy v n d li u Employee c s d li u Access MyData.mdb (thông qua ODBC) Ví d 3-1: EmployeeList.jsp Employee List Query Trang 116 Bài giảng Lập trình Mạng Ch y th ch ng trình, gõ địa URL: http://localhost:8100/EmployeeList.jsp Trang 118 Bài giảng Lập trình Mạng TÀI LI U THAM KH O [1] Nguy n Ph ng Lan, Hoàng Đức H i - 2001 Java l p trình m ng – Nhà xu t b n Giáo d c [2] Nguy n Ph ng Lan, Hoàng Đức H i - 2003 L p trình ứng d ng Web với JSP/Servlet – Nhà xu t b n Lao động – Xã hội [3] Nguy n Ph ng Lan - 2003 JAVA (t p1, 2) – Nhà xu t b n Lao động – Xã hội [4] Hoàng Ngọc Giao - 1998 L p trình Java th (t p 1, 2) – Nhà xu t b n Thống kê [5] PTS Lê Khắc Bình, Bùi Xuân To i - 1995 M ng máy tính cho ng [6] www.java.sun.com [7] www.javavietnam.org i - Nhà xu t b n Văn hóa Trang 119 [...]... dung trang Web index.htm ra màn hình String line; while((line = in.readLine()) != null) { Trang 13 Bài giảng Lập trình Mạng System.out.println (line); } }catch (Exception e) { // Quá trình mở và kết nối với trang web bị lỗi System.out.println (e) ; } Trang 14 Bài giảng Lập trình Mạng Ph n 2: CH Ngôn ng l p trình Java NG 1: T ng quan v Java I Lịch s Java Chúng ta bi t đ n Sun Microsystems nh một nhà s... Bài giảng Lập trình Mạng C u trúc an ninh c a Java dựa vào ba thành ph n: Trình n p lớp, trình kiểm tra lớp và trình qu n lý an ninh (SecurityManager) Chúng ta đã bi t rằng trình kiểm tra lớp làm nhi m v đ m b o chắc chắn ch h ng trình Java đ ợc biên dịch đúng đắn, khi thực hi n sẽ không gây lỗi nh ng đ n h thống cũng nh không đ ng ch m đ n nh ng d li u "riêng t " trên máy khách hàng Bên c nh đó, trình. .. và th t c k t hợp với nhau thành một khối Trang 17 Bài giảng Lập trình Mạng ng trình Java, máy o Java s d ng trình n p lớp (class loader) để đọc các Khi thực hi n ch bytecode từ đĩa hoặc k t nối m ng Các lớp đ ợc n p sẽ ph i đi qua trình kiểm tra lớp (class verifier) để chắc chắn rằng chúng sẽ không sinh ra các lỗi nh h ng đ n h thống khi thực thi Quá trình kiểm tra này làm tăng th i gian n p một lớp,... 1994, họ đã đ a ra WebRunner, một trình duy t Web vi t bằng Oak (sau này trình duy t này đ ợc đ i tên thành HotJava và hi n nay v n đang đ ợc ti p t c phát triển) Cuối cùng, vào năm 1995, Oak đ ợc đ i tên thành Java (do m c đích th ng m i) và đ a ra trình di n t i SunWorld 95 Từ đó đ n nay, Java nhanh chóng phát triển Th m chí tr ớc khi Trang 15 Bài giảng Lập trình Mạng trình dịch Java đ u tiên đ ợc đ... Java AppletViewer Bài t p 1 Cài đặt Java 2 2 Gõ các l nh sau t i d u nhắc và li t kê các tham số khác nhau c a chúng: Ü javac Ü java Trang 21 Bài giảng Lập trình Mạng CH NG 2: Các thành ph n c b n của ngôn ng l p trình java Văn ph m Java chỉ định cách vi t nh sau: - L i chú thích: Đ ợc thêm vào b i ng i l p trình với m c đích gi i thích - Các câu l nh: Mỗi l nh là dòng đ n c a ch ng trình - Khối l nh:... ớc h t là đ n gi n hoá công vi c c a ng i l p trình K đ n, do nhu c u ch y trên m ng, Java ph i th t sự an toàn và n định, cũng nh có kh năng làm vi c đ ợc với nhi u kiểu ph n cứng, ph n m m khác nhau C u trúc ngôn ng Java thực sự đã đ m b o đ ợc t t c các tính năng trên Trang 16 Bài giảng Lập trình Mạng Cũng nh các ngôn ng l p trình khác, Java c n một trình biên dịch để chuyển đ i mã l nh cho ng i... n hoàn thi n nh ng nh ợc điểm, phát triển và ti p t c làm thay đ i bộ mặt c a Internet cũng nh Intranet Trang 20 Bài giảng Lập trình Mạng Kiểm tra sự ti n bộ 1 B n có thể vi t các ch ng trình d ng th t c bằng Java Đúng/Sai 2 Java là ngôn ng có kiểu d li u chặt chẽ Đúng/Sai 3 .là ch ng trình Java ch y độc l p, và s d ng giao di n đ họa để ng is d ng nh p d li u 4 .s d ng JDBC API để k t nối c s... nằm trên máy ch l n trên máy khách hàng ng đối t ng L p trình h ớng đối t ợng (OOP) là ph ng thức vi t các ứng d ng d b o trì, d nâng c p và đặc bi t là có thể tái s d ng các mã l nh Java là một ngôn ng h ớng đối t ợng, do đó nó có Trang 19 Bài giảng Lập trình Mạng đ y đ các đặc tính trên Ngoài ra, th vi n lớp Java cung c p khá đ y đ cho ng i l p trình để bắt đ u một dự án mới IV.6.Đa lu ng (multi-threads)... :, {}, [ ], ?, \, &, |, #, $ Trang 24 Bài giảng Lập trình Mạng Ngoài ra ngôn ng JAVA còn dùng bộ ký tự Unicode Đó là một bộ ký tự, nó không chỉ bao g m nh ng ký tự đã có trong bộ ký tự ASCCI mà còn có vài tri u ký tự khác t ng ứng với h u h t các b ng ch cái trên th giới IV.Từ khóa và tên IV.1.Tên Cũng t ng tự nh các ngôn ng l p trình khác nh C, C++, ngôn ng l p trình JAVA cũng quy định cách đặt tên... s d ng Không gi ng nh các ngôn ng l p trình khác JAVA không có bi n toàn c c Bi n đối t ợng hay bi n lớp đ ợc dùng để truy n thông tin toàn c c gi a hai hay nhi u đối t ợng Trang 28 Bài giảng Lập trình Mạng VII.1.4.Ph m vi của bi n Giống nh ngôn ng COBOL t t c các bi n đ u là bi n toàn c c Bi n toàn c c là một bi n có thể truy c p b t cứ từ đâu trong một ch ng trình và do v y mà bi n toàn c c ph i

Ngày đăng: 10/04/2016, 18:59

Từ khóa liên quan

Mục lục

  • Các giao thức mạng

  • Giao tiếp trên mạgn theo mô hình Clinet/Server

  • Tổng quan về Java

    • Lịch sử Java

    • Java là gì?

    • Cấu trúc của Java

    • Các đặc tính chính của Java

    • Các thành phần cơ bản của ngôn ngữ lập trình Java

      • Ghi chú (Comment)

      • Câu lệnh và khối lệnh

      • Tập ký tự dùng trong JAVA

      • Từ khóa và tên

      • Kiểu dữ liệu

      • Hằng (literal)

      • Biến

      • Chuyển đổi kiểu dữ liệu

      • Biểu thức và Toán tử

      • Các câu lệnh điều khiển

      • APPLETS

        • Đại cương về HTML

        • Tổng quan về applet

          • Giới hạn của Applet

          • Các tính năng cao cấp của Applet API

            • Hiển thị chuổi tình trạng ngắn

            • Đan xen vào các trang Web

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

  • Đang cập nhật ...

Tài liệu liên quan