Bài thực tập môn Lập trình java

GIỚI THIỆU Trong quá trình học tập,tiếp thu kiến thức môn lập trình java tại trường Đại học KTKTCN. Dưới sự dẫn dắt và gướng dẫn của thầy Vũ Đình Thắng. Tập thế sinh viên nhóm 3 đã soạn ra tài liệu này. Sau đây là nội dung : Phần I: Giới thiệu Phần II: Nội dung + Chương 1: Hướng dẫn cài đặt và cấu hình máy ảo java + Chương 2: Lý thuyết + Chương 3: Bài tập cơ sở + Chương 4: Bài tập mạng Phần III: Tài liệu tham khảo Tài liệu giúp người đọc có thể tự cài đặt và vận hành Jcreator .Trang bị

doc30 trang | Chia sẻ: huyen82 | Lượt xem: 2232 | Lượt tải: 0download
Tóm tắt tài liệu Bài thực tập môn Lập trình java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cho người đọc kiến thức về mạng Lan, các thiết bị mạng như SWITCH, Card mạng, Bridge, Repeater, Router. Đặc biệt tài liệu sẽ giúp người đọc hiêu thêm về bộ môn lập trình mạng bằng java. Cuối cùng là 2 bài điển hình về lập trình java. Mục lục Phần I : Giới thiệu 1 Phần II: Nội dung 4 Chương 1. Hướng dẫn cài đặt và cấu hình 4 1.1. Cài đặt JDK 4 1.2 .Cài đặt Jcreator 11 Chương 2. Lý thuyết 13 2.1. Mạng căn bản 13 2.1.1. Tìm hiểu về mô hình LAN 13 2.1.2. Giới thiệu về thiết bị mạng 14 2.1.2.1. HUB 14 2.1.2.2. SWITCH 14 2.1.2.3. ROUTER 15 2.1.2.4. NETWORK INTERFACE CARD 17 2.1.2.5. BRIDGE 18 2.1.2.6. REPEATOR 18 2.2. Lập trình Java trên mạng 19 2.2.1. Các khái niệm 19 2.2.2. Tìm hiểu các dịch vụ và các lớp của gói java.net 20 2.2.2.1. Các dịch vụ 20 2.2.2.2. Lớp InetAddress 21 2.2.2.3. Lớp Socket 21 2.2.2.4. Lớp ServerSocket 21 2.2.2.5. Lớp URL 21 2.3. Lớp DatagramSocket và DatagramPackage 22 2.3.1. Lớp DatagramSocket 22 2.3.2. Lớp DatagramPackage 23 Chương 3. Bài tập cơ sở 24 3.1. Đề tài 24 3.2. Đặt vấn đề 24 3.3. Hướng giải quyết 24 3.4. Code 24 3.5. Chạy thử 25 Chương 4. Bài tập mạng 27 4.1. Đề tài 27 4.2. Đặt vấn đề 27 4.3. Hướng giải quyết 27 4.4. Code 27 4.6. Chạy thử 29 Phần III : Tài liệu tham khảo 31 Nội dung Chương 1: Hướng dẫn cài đặt và cấu hình 1.1 Hướng dẫn cài đặt JDK + Jcreator Các Software cần thiết.(File cài đặt trong thư mục setup của CD) Cài đặt JDK. Thực thi tập tin j2sdk-1_4_0-win và thực hiện các bước Next. Thực hiện các thao tác Next đến khi chọn Finish. Kiểm tra lại kết quả cài đặt phải có đầy đủ các thư mục như sau: è Cài đặt JDK 1.4 và JRE 1.4 thành công. Cấu hình hệ thống. Cấu hình sao cho hệ thống nhận thấy thư viện JDK. Bước 1: Nhấp phải vào My Computer à Chọn Properties Bước 2: Chọn Tab Advanced à Environment Variables. Bước 3: Thiết lập 2 thông số cho User variables for Administrator. Chọn New: Chạy thử 1 chương trình đơn giản. Bước 1: Mở Notepad gõ chương trình sau và lưu trữ với tên wellcome.java Bước 2: vào Start à Run Chuyển đổi vào thư mục lưu trữ tập tin và gõ javac wellcome.java như hình sau (Nếu không báo lỗi xem như chương trình dịch hoàn tất). Kiểm tra lại nội dung thư mục: Thực thi chương trình: è Chạy chương trình thành công. 1.2 Cài đặt Jcreator Phần mềm Thực thi tập tin setup.exe. Thực hiện lặp đi lặp lại thao tác chọn nút Next cho đến khi gặp Finish. Cấu hình Jcreator. Thực thi lần đầu tiên JCreator sẽ mở giao diện như sau: Chọn Next. Click chọn nút Browse. Để chọn đến thư mục chứa JDK. Chọn Next Cấu hình đến tài liệu tra cứu của JDK 1.4. Chương 2: Lý thuyết 2.1- Mạng căn bản Tìm hiểu về mô hình mạng LAN ( Local Area Network – viết tắt là LAN) LAN là một hệ thống mạng dùng để kết nối các máy tính trong một phạm vi nhỏ (nhà ở, phòng làm việc, trường học, …). Các máy tính trong mạng LAN có thể chia sẻ tài nguyên với nhau, mà điển hình là chia sẻ tập tin, máy in, máy quét và một số thiết bị khác. Một mạng LAN tối thiểu cần có máy chủ (server), các thiết bị ghép nối (Repeater, Hub, Switch, Bridge), máy tính con (client), card mạng (Network Interface Card – NIC) và dây cáp (cable) để kết nối các máy tính lại với nhau. Trong thời đại của hệ điều hành MS-DOS, máy chủ mạng LAN thường sử dụng phần mềm Novell NetWare, tuy nhiên điều này đã trở nên lỗi thời hơn sau khi Windows NT và Windows for Workgroups xuất hiện. Ngày nay hầu hết máy chủ sử dụng hệ điều hành Windows, và tốc độ mạng LAN có thể lên đến 10 Mbps, 100 Mbps hay thậm chí là 1 Gbps. Một hình thức khác của LAN là WAN (Wide Area Network). Có nghĩa là mạng diện rộng. Dùng để nối các LAN lại với nhau (thông qua router). Một hình thức khác nữa của mạng LAN, mới xuất hiện trong những năm gần đây là WLAN (Wireless LAN) – mạng LAN không dây. . Đặc trưng địa lý: Mạng cục bộ thường được cài đặt trong một phạm vi địa lý tương đối nhỏ, như trong một tòa nhà, một khu đại học, một căn cức quân sự….với đường kính của mạng (tức khoảng cách giữa hai trạm xa nhất) có thể là từ vài chục mét tới vài chục ki-lô-met trong thời đại công nghệ hiện nay. Giới hạn trên của đại lượng này rõ rằng là một giá trị có ý nghĩa tương đối. Do đó không thể chỉ lấy đặc trừng địa lý để phân biệt LAN với các loại mạng khác. Đặc trưng tốc độ truyền : Mạng cục bộ có tốc độ truyền thường cao hơn so với mạng diện rộng. Với công nghệ mạng hiện nay, tốc độ truyền của mạng cục bộ có thể đạt tới 100 mb/s Đặc trưng độ tin cậy : Tỷ suất lỗi (error rate) trên mạng cục bộ là thấp hơn nhiều so với mạng diện rộng ( như mạng điện thoại) . Đặc trưng quản lý: Mạng cục bộ thường là sở hữu riêng của một tổ chức nào đó (Trường học, doanh nghiệp…) do vậy việc quản lý khai thác mạng hoàn toàn tập trung, thống nhất. Dĩ nhiên với sự phát triển nhanh chóng của công nghệ mạng, các đặc trưng nói trên cũng chỉ mang tính tương đối. Sự phân biệt giữa mạng cục bộ và mạng diện rộng sẽ ngày càng “mờ” dần. 2.1.2 Giới thiệu về các thiết bị mạng ( SWITCH, Card mạng, Bridge, Repeator, Router) Ngày nay, hầu hết các router đều là thiết bị kết hợp nhiều chức năng, và thậm chí nó còn đảm nhận cả chức năng của switch và hub. Đôi khi router, switch và hub được kết hợp trong cùng một thiết bị, và đối với những ai mới làm quen với mạng thì rất dễ nhầm lẫn giữa chức năng của các thiết bị này. 2.1.2.1 HUB : Hub được coi là một Repeater có nhiều cổng. Một Hub có từ 4 đến 24 cổng và có thể còn nhiều hơn. Trong phần lớn các trường hợp, Hub được sử dụng trong các mạng 10BASE-T hay 100BASE-T. Khi cấu hình mạng là hình sao (Star topology), Hub đóng vai trò là trung tâm của mạng. Với một Hub, khi thông tin vào từ một cổng và sẽ được đưa đến tất cả các cổng khác. Hub có 2 loại là Active Hub và Smart Hub. Active Hub  là loại Hub được dùng phổ biến, cần được cấp nguồn khi hoạt động, được sử dụng để khuếch đại tín hiệu đến và cho tín hiệu ra những cổng còn lại, đảm bảo mức tín hiệu cần thiết. Smart Hub (Intelligent Hub) có chức năng tương tự như Active Hub, nhưng có tích hợp thêm chip có khả năng tự động dò lỗi - rất hữu ích trong trường hợp dò tìm và phát hiện lỗi trong mạng. 2.1.2.2 Switch: Switch đôi khi được mô tả như là một Bridge có nhiều cổng. Trong khi một Bridge chỉ có 2 cổng để liên kết được 2 segment mạng với nhau, thì Switch lại có khả năng kết nối được nhiều segment lại với nhau tuỳ thuộc vào số cổng (port) trên Switch. Cũng giống như Bridge, Switch cũng "học" thông tin của mạng thông qua các gói tin (packet) mà nó nhận được từ các máy trong mạng. Switch sử dụng các thông tin này để xây dựng lên bảng Switch,  bảng này cung cấp thông tin giúp các gói thông tin đến đúng địa chỉ. Ngày nay, trong các giao tiếp dữ liệu, Switch thường có 2 chức năng chính là chuyển các khung dữ liệu từ nguồn đến đích, và xây dựng các bảng Switch. Switch hoạt động ở tốc độ cao hơn nhiều so với Repeater và có thể cung cấp nhiều chức năng hơn như khả năng tạo mạng LAN ảo (VLAN). 2.1.2.3 Router Còn router thì khác hoàn toàn so với hai thiết bị trên. Trong khi hub hoặc switch liên quan tới việc truyền khung dữ liệu thì chức năng chính của router là định tuyến các gói tin trên mạng cho tới khi chúng đến đích cuối cùng. Một trong những đặc tính năng quan trọng của một gói tin là nó không chỉ chứa dữ liệu mà còn chứa địa chỉ đích đến. Router là thiết bị mạng lớp 3 của mô hình OSI (Network Layer). Router kết nối hai hay nhiều mạng IP với nhau. Các máy tính trên mạng phải “nhận thức” được sự tham gia của một router, nhưng đối với các mạng IP thì một trong những quy tắc của IP là mọi máy tính kết nối mạng đều có thể giao tiếp được với router. Ưu điểm của Router: Về mặt vật lý, Router có thể kết nối với các loại mạng khác lại với nhau, từ những Ethernet cục bộ tốc độ cao cho đến đường dây điện thoại đường dài có tốc độ chậm. Nhược điểm của Router: Router chậm hơn Bridge vì chúng đòi hỏi nhiều tính toán hơn để tìm ra cách dẫn đường cho các gói tin, đặc biệt khi các mạng kết nối với nhau không cùng tốc độ. Một mạng hoạt động nhanh có thể phát các gói tin nhanh hơn nhiều so với một mạng chậm và có thể gây ra sự nghẽn mạng. Do đó, Router có thể yêu cầu máy tính gửi các gói tin đến chậm hơn. Một vấn đề khác là các Router có đặc điểm chuyên biệt theo giao thức - tức là, cách một máy tính kết nối mạng giao tiếp với một router IP thì sẽ khác biệt với cách nó giao tiếp với một router Novell hay DECnet. Hiện nay vấn đề này được giải quyết bởi một mạng biết đường dẫn của mọi loại mạng được biết đến. Tất cả các router thương mại đều có thể xử lý nhiều loại giao thức, thường với chi phí phụ thêm cho mỗi giao thức. Router thường được kết nối với ít nhất hai mạng, thông thường là hai mạng LAN hoặc WAN, hoặc một LAN và mạng của ISP nào đó. Router được đặt tại gateway, nơi kết nối hai hoặc nhiều mạng khác nhau. Nhờ sử dụng các tiêu đề (header) và bảng chuyển tiếp (forwarding table), router có thể quyết định nên sử dụng đường đi nào là tốt nhất để chuyển tiếp các gói tin. Router sử dụng giao thức ICMP để giao tiếp với các router khác và giúp cấu hình tuyến tốt nhất giữa bất cứ hai host nào. Ngày nay, có rất nhiều các dịch vụ được gắn với các router băng rộng. Thông thường, một router bao gồm 4-8 cổng Ethernet switch (hoặc hub) và một bộ chuyển đổi địa chỉ mạng - NAT (Network Address Translator). Ngoài ra, router thường gồm một máy chủ DHCP (Dynamic Host Configuration Protocol), máy chủ proxy DNS (Domain Name Service), và phần cứng tường lửa để bảo vệ mạng LAN trước các xâm nhập trái phép từ mạng Internet. Tất cả các router đều có cổng WAN để kết nối với đường DSL hoặc modem cáp &endash; dành cho dịch vụ Internet băng rộng, và switch tích hợp để tạo mạng LAN được dễ dàng hơn. Tính năng này cho phép tất cả các PC trong mạng LAN có thể truy cập Internet và sử dụng các dịch vụ chia sẻ file và máy in. Một số Router chỉ có một cổng WAN và một cổng LAN, được thiết kế cho việc kết nối một hub/switch LAN hiện hành với mạng WAN. Các switch và hub Ethernet có thể kết nối với một router để mở rộng mạng LAN. Tuỳ thuộc vào khả năng (nhiều cổng) của mỗi router, switch hoặc hub, mà kết nối giữa các router, switche/hub có thể cần tới cáp nối thẳng hoặc nối vòng. Một số router thậm chí có cả cổng USB và nhiều điểm truy cập không dây tích hợp. Một số Router cao cấp hoặc dành cho doanh nghiệp còn được tích hợp cổng serial &endash; giúp kết nối với modem quay số ngoài, rất hữu ích trong trường hợp dự phòng đường kết nối băng rộng chính trục trặc, và tích hợp máy chủ máy in mạng LAN và cổng máy in. Ngoài tính năng bảo vệ được NAT cung cấp, rất nhiều Router còn có phần cứng tường lửa tích hợp sẵn, có thể cấu hình theo yêu cầu của người dùng. Tường lửa này có thể cấu hình từ mức đơn giản tới phức tạp. Ngoài những khả năng thường thấy trên các router hiện đại, tường lửa còn cho phép cấu hình cổng TCP/UDP dành cho game, dịch vụ chat, và nhiều tính năng khác. Và như vậy, có thể nói một cách ngắn gọn là: hub được gắn cùng với một thành phần mạng Ethernet; switch có thể kết nối hiệu quả nhiều thành phần Ethernet với nhau; và Router có thể đảm nhận tất cả các chức năng này, cộng thêm việc định tuyến các gói TCP/IP giữa các mạng LAN hoặc WAN, và tất nhiên còn nhiều chức năng khác nữa. Các mạng khác nhau chúng ta không thể truy cập lẫn nhau, do đó người ta đã đưa ra khái niệm về Router qua đó người ta có thể truy cập thoải mái giữa các mạng khác nhau hay nói cách khác Router dùng để nối các mạng lại với nhau. Router có 2 dạng đó router cứng và router mềm: - Router cứng: đó là một thiết bị phần cứng mà nhà sản xuất đã tích hợp những tính năng cần thiết mà khi sử dụng chúng ta cần phải Congif chúng để nối các mạng lại với nhau, điển hình cho Router dạng này là nhà sản xuất Cisco. Để cấu hình các Router của Cisco chúng ta phải tìm hiểu các lớp học về CCNA, CCNP…. - Router mềm: thay vì phải mua thêm thiết bị phần cứng như trên người ta lại dùng một phần mềm trên máy có tính năng tương tự Router cứng, điển hình cho Router dạng này là Microsoft. Vì chúng ta đang tìm hiểu các tính năng của Microsoft nên trong phần này tôi chỉ đề cập đến Router mềm mà thôi 2.1.2.4 Network Interface Card Cạc mạng (network card), hay cạc giao tiếp mạng (Network Interface Card), là một bản mạch cung cấp khả năng truyền thông mạng cho một máy tính. Nó còn được gọi là bộ thích nghi LAN (LAN adapter), được cắm trong một khe (slot) của bản mạch chính và cung cấp một giao tiếp kết nối đến môi trường mạng. Chủng loại cạc mạng phải phù hợp với môi trường truyền và giao thức được sử dụng trên mạng cục bộ. Cạc mạng là thiết bị chịu trách nhiệm: * Chuyển đổi các tín hiệu máy tính ra các tín hiệu trên phương tiện truyền dẫn và ngược lại. * Gửi/nhận và kiểm soát luồng dữ liệu được truyền. Các thành phần trong card mạng * I/O Address: Địa chỉ bộ nhớ chính của máy tính, được dùng để trao đổi dữ liệu giữa máy tính với thiết bị (cạc mạng) * Memory Address: Địa chỉ bộ nhớ chính của máy tính, là nơi bắt đầu vùng đệm dành cho các xử lí của cạc mạng * DMA Channel: Cho phép thiết bị (cạc mạng) làm việc trực tiếp với bộ nhớ máy tính mà không cần thông qua CPU * Boot PROM: Cho phép khởi động hệ thống và kết nối vào mạng * MAC Address: Địa chỉ định danh duy nhất được IEEE cấp cho mỗi cạc mạng * Đầu nối BNC: Nối cạc mạng với cáp qua đầu nối chữ T (10BASE2) * Đầu nối RJ-45: Nối cạc mạng với cáp qua đầu nối RJ-45 (10BASE-T/100BASE-T) * Đầu nối AUI: Nối cạc mạng với cáp (10BASE5) * Khe cắm mở rộng: nơi cho phép gắn cạc mạng vào máy tính, có nhiều chuẩn: ISA, EISA, PCI, MCA, ... * IRQ (Interrupt Request): Chỉ số ngắt. Mỗi thiết bị trên máy tính, kể cả cạc mạng, đều được ấn định một chỉ số ngắt duy nhất để yêu cầu CPU phục vụ Ví dụ: IRQ=0: system timer IRQ=4: COM1 và COM3 IRQ=10: chưa ấn định 2.1.2.5 Bridge Bridge Bridge là thiết bị mạng thuộc lớp 2 của mô hình OSI (Data Link Layer). Bridge được sử dụng để ghép nối 2 mạng để tạo thành một mạng lớn duy nhất. Bridge được sử dụng phổ biến để làm cầu nối giữa hai mạng Ethernet. Bridge quan sát các gói tin (packet) trên mọi mạng. Khi thấy một gói tin từ một máy tính thuộc mạng này chuyển tới một máy tính  trên mạng khác, Bridge sẽ sao chép và gửi gói  tin này tới mạng đích. Ưu điểm của Bridge là hoạt động trong suốt, các máy tính thuộc các mạng khác nhau vẫn có thể gửi các thông tin với nhau đơn giản mà không cần biết có sự "can thiệp" của Bridge. Một Bridge có thể xử lý được nhiều lưu thông trên mạng như Novell, Banyan... cũng như là địa chỉ IP cùng một lúc. Nhược điểm của Bridge là chỉ kết nối những mạng cùng loại và sử dụng Bridge cho những mạng hoạt động nhanh sẽ khó khăn nếu chúng không nằm gần nhau về mặt vật lý. 2.1.2.6 Repeater Trong một mạng LAN, giới hạn của cáp mạng là 100m (cho loại cáp mạng CAT 5 UTP –  là cáp được dùng phổ biến nhất), bởi tín hiệu bị suy hao trên đường truyền nên không thể đi xa hơn. Vì vậy, để có thể kết nối các thiết bị ở xa hơn, mạng cần các thiết bị để khuếch đại và định thời lại tín hiệu, giúp tín hiệu có thể truyền dẫn đi xa hơn giới hạn này. Repeater là một thiết bị ở lớp 1 (Physical Layer) trong mô hình OSI. Repeater có vai trò khuếch đại tín hiệu vật lý ở đầu vào và cung cấp năng lượng cho tín hiệu ở đầu ra để có thể đến được những chặng đường tiếp theo trong mạng. Điện tín, điện thoại, truyền thông tin qua sợi quang… và các nhu cầu truyền tín hiệu đi xa đều cần sử dụng Repeater. . 2.2- Lập trình java trên mạng Mục này ta sẽ làm quen và tìm hiểu cách lập trình trên mạng bằng ngôn ngữ java. Java cung cấp cho ta các lớp Socket, ServerSocket, DatagramSocket… đủ mạnh để thiết kế bất kì ứng dụng nào theo mô hình khách/chủ ( client/server). Sau đó chúng ta sẽ làm một ví dụ về lập trình mạng bằng java sử dụng UDP. Trước tiên ta tìm về một số khái niệm trong lập trình mạng. Các khái niệm. Liên lạc trên Internet 1.1.2 Họ giao thức TCP/IP ( Transmission Control Protocol/ Internet Protocol) Để hai hay nhiều máy tính nói chuyện được với nhau, chúng phải dùng chung một ngôn ngữ chung. Trên Internet ngày nay ngôn ngữ chung đều dựa theo quy ước hay giao thức cốt lõi là TCP/IP. Giao thức này mỗi máy sẽ được đặt cho một số riêng gọi là địa chỉ IP(IP Address)- địa chỉ này như 1 số điện thoại và nó là duy nhất, không được máy nào trùng nhau( trên phạm vi thế giới). Địa chỉ này được tổ chức quốc tế InterNic (Internet Network Information Center) cung cấp khi một máy tính tham gia vào hệ thống Internet toàn cầu. Địa chỉ IP và tên riêng của máy. Hai khái niệm này có thể coi là tương đồng với nhau. Sự khác biệt là địa chỉ IP được đánh dấu bằng các chữ số, còn tên riêng của máy thì không bắt buộc điều này. Việc sử dụng các chữ số đối với địa chỉ IP chẳng qua là để tiện cho máy tính xử lý. Còn tên riêng của máy thì để người sử dụng dễ nhớ, và dễ gọi tên hơn. Máy chủ : Tên của máy chủ còn được gọi là tên vùng (Domain name), chúng được đặt teentheo thứ tự phân cấp của tên lãnh thổ, vùng, tổ chức, hay tên cá nhân. Mỗi nhóm phân cấp cách nhau bằng một dấu (.). Cách đọc tên vùng của một máy chủ ta đi từ trái qua phải : Vd: Java.sum.com Trong đó : - Java : tên máy tính - Sun : tên tổ chức/ công ty - com : tên vùng Lưu ý: Một máy cũng có thể có nhiều địa chỉ IP nếu có nhiều giao tiếp kết nối với các máy tính khác thông qua mạng Internet. Cách chuyển dữ liệu trên mạng, giao thức TCP và UDP Cách chuyển dữ liệu đảm bào dựa vào giao thức TCP (Transmission Control Protocol) Cách chuyển dữ liệu không đảm bảo dựa vào giao thức UDP (User Datagram Protocol) Giao thức TCP: gửi từng gói dữ liệu đi, nơi nhận theo giao thức này phải có trách nhiệm thông báo và kiểm tra xem dữ liệu đã đến đủ hay chưa, có lỗi hay không có lỗi. Trước khi chuyển dữ liệu thì luôn có sự kết nối giữa máy gửi và máy nhận. Giao thức này chiếm một số tài nguyên của hệ thống và cách lập trình cho giao thức này hơi phức tạp. Được dùng chủ yếu trong các dịch vụ như truyền tập tin, dịch vụ trực tuyến Internet đòi hỏi sự tin cậy cao. Giao thức UDP: Ngược lại với giao thức TCP, giao thức UDP thực hiện việc gửi dữ liệu mà không có sự kết nối trước nào giữa nơi gửi và ở nơi nhận, dữ liệu gửi đi mặc định rằng máy tính ở đầu nhận luôn ở trạng thái sẵn sàng để tiếp đón dữ liệu gửi đến. Nếu có lỗi trong quá trình truyền hay không nhận được đầy đủ thì cũng không có thông tin phản hồi gì lại cho nơi gửi. Giao thức này không đòi hỏi tài nguyên của hệ thống và thường được dùng trong những ứng dụng không đòi hỏi sự chính xác cao như: dịch vụ thông báo giờ, tỉ giá hay các dịch vụ gửi tin…. Kết nối với Internet Các dịch vụ của nhà cung cấp là ISP ( như FPT, Cnet… ) giúp ta có thể kết nối với Internet bằng đường truyền điện thoại thông qua moden. Tìm hiểu về các dịch vụ, các lớp cần thiết của gói java.net. 2.2.2.1 Dịch vụ - Dịch vụ từ phía máy chủ: Khi kết nối vào máy chủ ta có thể yêu cầu máy chủ nhiều dịch vụ khác nhau, như dịch vụ truy tìm và đọc các trang Web trên 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 và UDP chỉ chịu trách nhiệm đưa dữ liệu từ một máy tính này tới máy tính khác, còn dữ liệu đó sẽ được gửi cho dịch vụ nào thì phải thông qua một quy định nữa là cổng (hay port). Mỗi chương trình dịch vụ sẽ sử dụng một cổng khác nhau để truy xuất thông tin. Cổng là một số nguyên dương có giá trị từ 1đến 16383. - Máy chủ (Server) sẽ quy định cổng được sử dụng cho mỗi loại dịch vụ. Thông tin máy khách (client) và máy chủ (server) phải sử dụng cổng tương ứng nhau thì mới trao đổi được với nhau. Tuy nhiên, hầu hết các chương trình dịch vụ nổi tiếng hiện nay đều có quy định chuẩn cổng dành riêng cho dịch mình như ; Dịch vụ Cổng (Port) FTP 21 HTTP 80 Telnet 23 Finger 79 SMTP 25 - Các dịch vụ khác hỗ trợ trên Internet như : Email, nhóm tin (NewsGroup), chuyển tập tin( File Tranfe), đăng nhập từ xa ( Remote login)….. Các lớp cần thiết của gói thư viện JAVA.NET 2.2.2.1 Lớp InetAddress Java xây dựng lớp InetAddress dành cho việc quản lý địa chỉ theo tên và theo số. Lớp InetAddress cung cấp các phương thức static thông dụng nhất dùng để chuyển đổi và truy xuất địa chỉ IP ( không có phương thức khởi dựng cho lớp này) Các phương thức thông dụng của lớp : public static InetAddress getLocalHost() throws UnknownHostExceptiongetByName Trả về dối tượng InetAddress là địa chỉ của máy cục bộ ( localhost) public static InetAddress getByName(String host) throws UnknowsHostException Phương thức này nhận địa chỉ của một máy bằng kiểu chuỗi và trả về đối tượng InetAddress thay mặt cho địa chỉ máy này. public static InetAddress[] getAllByName(String host) throws UnknowsHostException Phương thức này nhận địa chỉ của một máy bằng kiểu chuỗi và trả về tất cả các đối tượng InetAddress thay mặt cho địa chỉ máy này. public byte[] getAddress() Trả về địa chỉ IP của đối tượng InetAddress dưới dạng một dãy các byte, Ví trí cao nhất nằm ở byte 0. public String []getHostAddress() Trả về địa chỉ IP của đối tượng InetAddress dưới dạng một chuỗi được định dạng phân làm 4 nhóm %d%d%d%d ( ví dụ : “127.0.0.1”). 2.2.2.3 Lớp Socket Lớp Socket dùng tạo kết nối từ phía máy khách với máy chủ thường được khởi dựng bằng các phương thức : public Socket(String host,int port) throws UnknownHostException, IOException Tạo ra một Socket kết nối theo địa chỉ host và cổng port. public Socket (InetAddress address, int port) throws IOException Tạo ra một Socket kết nối từ địa chỉ là đối tượng InetAddress và số cổng port. public Socket (String host,int port, boolean stream) throws IOException Tạo ra một socket kết nối theo địa chỉ host và số cổng port, tham số stream cuối cùng để 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ế là DatagramSocket. Các phương thức khác hỗ trợ cho lớp Socket từ phía máy khách gồm : InputStream getInputStream() throws IOException Lấy về luồng nhập để máy khách có thể đọc dữ liệu trả về từ phía máy chủ. OutupStream getOutputStream() throws IOException Lấy về luồng xuất để máy khách có thể ghi dữ liệu gửi đến máy chủ InetAddress getInetAddress() Lấy địa chỉ kết nối Socket của máy chủ int getPort() Lấy về số coognr dùng kết nối của máy chủ synchronized void close() throws IOException Cắt đứt kết nối với máy chủ 2.2.2.4 Lớp ServerSocket Lớp ServerSocket dùng tạo kết nối từ phía máy chủ với các máy khách. Đối tượng ServerSocket được tạo ra trên máy chủ và lắng nghe những kết nối từ phía máy khách gửi đến theo một số cổng định trước. Đối tượng ServerSocket được khởi dựng từ phương thức sau: public ServerSocket (int port) throws Exception port là 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ừ các máy khác gửi đến đối tượng ServerSocket thường nhờ tới phương thức sau: Socket accept() throws IOException Phương thức này thực sự dừng lại chờ đợi cho đến khi nhận được thông tin kết nối sẽ trả về đối tượng socket của máy khách nơi có yêu cầu nối vào máy chủ. Public void close() throws IOException Cắt đứt mọi kết nối tới máy chủ. 2.2.2.5 Lớp URL URL (Uniform Resource Locator) là địa chỉ định vì tài nguyên trên mạng, thường một URL như đã đề cập bao gồm 3 phần : phần nghi thức (protocol), phần địa chỉ hay tên máy chủ (host name) và phần chỉ định tên tập tin hay tài liệu muốn lấy từ máy chủ về. Java đóng gói tất cả những đặc điểm này vào một lớp URL. Đối tượng URL được tạo ra bằng một trong những phương thức khởi dựng sau : public URL(String spec) throws MalfomedURLException Tạo mọt đối tượng URL từ địa chỉ định là một chuỗi public URL(String protocol, String host, int port, String file) throws MalformedURLException Tạo một địa chỉ định vị tuyệt đối với đầy đủ các thành phần: nghi thức ( protocol), máy chủ (server), đường dẫn (file) đến tập tin trên máy chủ ( bỏ qua thành phần định cổng giao tiếp, nếu truy tìm trang web theo nghi thức http thì cổng mặc định của chương trình Web server là 80) Các phương thức hỗ trợ khác dùng cho lớp URL là : public final Object getContent() throws IOException Lấy về nội dung mà kết nối theo địa chỉ URL có được String getFile() Lấy về thành phần tên tập tin hay tài liệu nằm trong chuỗi địa chỉ URL String getHost() Lấy tên máy chủ (thường là thành phần thứ hai của chuỗi URL) String getProtocol() Lấy về tên giao thức (thành phần đầu tiên của chuỗi URL) String getPort() Lấy về số hiệu cổng. String getRef() Lấy về nội dung tham khảo thêm trong chuỗi URL ( được đặt sau dấu # của chuỗi) Public final InputStream openStream() throws IOException Mở một luồng nhập để đọc thông tin trả về từ máy chủ. Lớp DatagramSocket và DatagramPackage 2.3.1 DatagramSocket Lớp này được dừng để chuyển đi một gói dữ liệu (biểu diễn bằng dối tượng DatagramPackage) theo phương thức UDP. Dữ liệu được gửi đi không đảm bảo được nhận đầy đủ và có thể bị lỗi trên đường truyền ( cơ chế dùng lớp DatagramSocket không an toàn bằng lớp Socket). Dưới đây là một số phương thức thường dùng của lớp DatagramSocket: public DatagramSocket () throws SocketException Phương thức khởi dựng để tạo kết nối UDP public DatagramSocket(int port) throws SocketException Phương thức khởi dựng để tạo kết nối UDP với số hiệu cổng port public void synchronized send(DatagramPackage p) throws IOExcepion Gửi gói dữ liệu đi. public void synchronized receive(DatagramePackage p) throws IOException Nhận gói dữ liệu gửi về public void synchronized close() Đóng kết nối 2.3.2 Lớp DatagramPackage Lớp này được dùng cho mọi gói chứa dữ liệu gửi đi trên mạng theo kết nối DatagramSocket. Một gói có thể chứa các thông tin như dữ liệu, chiều dài gói, các địa chỉ IP và số cổng mà từ đó gói dữ liệu được gửi đi. Dưới đây là một số phương thức hữu dụng của lớp DatagramPakage: public Datagrame(byte buf[],int len) Phương thức khởi dựng tạo ra gói chứa dữ liệu chứa trong bộ đêm buff[] và chiều dài gói dữ liệu là len public DatagramePackage(byte buf[], int len, InetAddress iadd,int port) Phương thức khởi dựng tạo ra gói có dữ liệu chứ trong bộ đệm buff[] cùng với chiều dài vùng đệm muốn lấy, địa chỉ máy đích và số hiệu cổng. public InetAddress getAddress() Trả về địa chỉ chứ trong gói dữ liệu public byte[] getData() Trả về dữ liệu thật sự chứa trong gói. public int getLength() Trả về kích thước hay chiều dài gói dữ liệu public int getPort() Trả về số hiệu cổng chứa trong gói dữ liệu. Chương 3: Bài tập cơ sở 3.1 Đề tài : Lập trình tạo Menu như sau và sau khi người sử dụng chọn một chức năng trong Menu thì máy sẽ chạy chương trình tương ứng với chức năng đó. *********************************************************** * MENU * * 1. Tìm Max, Min của 4 số * * 2. Tính tổng của mảng 1 chiều có n phần từ. * * 3. Tính tổng các phần tử chẵn của ma trận. * * 4. Thoát. * *********************************************************** Mời bạn chọn một chức năng ! *** 3.2 Đặt vấn đề: Bài toán yêu cầu người lập trình có kiến thức cơ bản về Java. Bốn chức năng của Menu là thể hiện của bốn bài toán cơ sở. Ngoài ra, còn sử dụng câu lệnh điều khiển và rẽ nhánh để điều khiển chương trình. 3.3 Hướng giải quyết: Sử dụng lệnh switch() để cho người sử dụng chọn các chức năng của Soft. Viết code các bài toán nhỏ tương ứng với từng chức năng của Menu, kiểm tra và chạy thử, sau khi hoàn thành thì ghép chúng tương ứng với các giá trị Case của Menu. Để tạo thuận tiện cho người sử dụng ta sử dụng thêm vòng lặp for( ; ; ), đây là vòng lặp vô hạn và chỉ kết thúc khi người sử dụng chọn chức năng thoát là ấn phím 4. Ngoài ra, bắt lỗi người sử dụng khi họ nhập phím chức năng là số âm hoặc số lớn hơn 4 bằng cách mặc định giá trị Case. 3.4 Code bài toán : import java.io.*; import java.text.*; class bai1{ public static void main (String args[])throws IOException,ParseException{ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); System.out.println("************************************************"); System.out.println("* MENU *"); System.out.println("* 1- Tim Max, Min cua 4 so *"); System.out.println("* 2- Tinh tong cua mang 1 chieu co n phan tu *"); System.out.println("* 3- Tinh tong cac phan tu chan cua ma tran *"); System.out.println("* 4- Thoat *"); System.out.println("************************************************"); System.out.println(); System.out.print(" Moi ban chon mot chuc nang : "); chon: for(;;){ int t=Integer.parseInt(in.readLine()); System.out.flush(); switch(t){ case 1:{ System.out.println("Chuong trinh tim max, min cua 4 so !"); System.out.println("Moi ban nhap vao 4 so : "); double a[]=new double [4]; for(int i=0;i<4;i++){ t=i+1; System.out.print("So thu "+t+" :"); a[i]=Double.parseDouble(in.readLine()); System.out.flush(); } System.out.print("4 so can tim max, min la : "); for(int i =0;i<4;i++) System.out.print(a[i] +" "); System.out.println(); double max=a[0]; double min=a[0]; for(int i=1;i<4;i++){ if(max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; } System.out.println("Max = "+max); System.out.print("Min = "+min); System.out.println(); System.out.print("Moi ban chon chuc nang de tiep tuc :"); continue chon; } case 2:{ System.out.println("Chuong trinh tinh tong cua mang 1 chieu co n phan tu !"); nhap: for(;;){ System.out.print("Moi ban nhap n : "); int n=Integer.parseInt(in.readLine()); System.out.flush(); if(n100) { System.out.println("Chu y : 0<n<=100 ! Moi ban nhap lai !"); continue nhap; } else{ double a[]=new double[100]; System.out.println(); System.out.println("Moi ban nhap cac phan tu cua mang 1 chieu :"); for(int i=0;i<n;i++){ System.out.print("A["+i+"] : "); a[i]=Double.parseDouble(in.readLine()); } System.out.println(); double s=0; for(int i=0;i<n;i++) s=s+a[i]; System.out.println("Tong cua mang : "+s); break nhap; } } System.out.println(); System.out.print("Moi ban chon chuc nang de tiep tuc :"); continue chon; } case 3:{ System.out.println("Tinh tong cac phan tu cha._.

Các file đính kèm theo tài liệu này:

  • doc26113.doc