Tìm hiểu lập trình mạng bằng ngôn ngữ java và cài đặt demo

56 2.4K 37
Tìm hiểu lập trình mạng bằng ngôn ngữ java và cài đặt demo

Đ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

Xây dựng mô phỏng thành công chương trình Chatroom với các tính năng có thể trao đổi thông tin giữa các Client bằng lập trình Socket Java. Một Server có thể phục vụ nhiều Client nên cùng lúc có thể có nhiều người đăng nhập hệ thống và tham gia chat với nhau.Chương trình demo có giao diện thân thiện, dễ sử dụng, đảm bảo các yếu tố :•Đa luồng•Đồng bộ hóa truyền tin các socket TCP với nhau•Bất đồng bộ giữa việc nhận tin và gửii tin của clientQuản lý được danh sách những người online từ đó cho phép xác định được đích đến của tin nhắn.có demo project code netbean + file .exe + file .jar + báo cáo trong link mediafile cuối tài liệu. Tài liệu phục vụ tốt cho nghiên cứu và báo cáo.

ĐẠI HỌC THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN  THỰC TẬP CƠ SỞ ĐỀ TÀI: TÌM HIỂU LẬP TRÌNH MẠNG BẰNG NGÔN NGỮ JAVA Giáo viên hướng dẫn: ThS.Tô Hữu Nguyên Sinh viên : Nguyễn Xuân Minh Lớp: K9E 1 Thái Nguyên, tháng 03 năm 2013 MỤC LỤC LỜI NÓI ĐẦU Ngày nay, mạng máy tính là công nghệ của thời đại. Các ứng dụng mạng đóng vai trò không thể thiếu để khai thác tiềm năng của mạng máy tính, đặt biệt là mạng Internet. Do vậy, lập trình mạng là môn học không thể thiếu của sinh viên ngành công nghệ thông tin nói chung sinh viên chuyên ngành mạng nói riêng. Mục đích của môn học lập trình mạng là cung cấp cho sinh viên biết kiến thức mạng liên quan cũng như cơ chế hoạt động kiến trúc của các phần mềm mạng. Từ đó, sinh viên hiểu biết cách viết các chương trình ứng dụng trong một hệ thống mạng quy mô nhỏ cũng như mạng Internet. Hiện nay, hầu như việc viết một ứng dụng để chạy trên máy đơn cục bộ không còn được ưa chuộng thích hợp nữa. Các chương trình ứng dụng hiện đại phải tích hợp triệu gọi lẫn nhau trên mạng LAN (mạng cục bộ), mạng Internet (mạng toàn cầu). Ngôn ngữ lập trình Java là một trong những lựa chọn tốt nhất để làm việc này, Javangôn ngữ lập trình hướng đối tượng thuần túy với 2 nhiều đặc trưng ưu việt so với các ngôn ngữ lập trình hướng đối tượng khác như tính độc lập với nền, tính bảo mật,… nền tảng Java còn hướng đến các ứng dụng mạng như : giao tiếp trên 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 những hiểu biết kỹ năng chuyên sâu hơn để tạo giao tiếp trao đổi dữ liệu giữa các máy tính với nhau. Java còn cung cấp bộ thư viện hỗ trợ lập trình mạng đơn giản rất hiệu quả. CHƯƠNG I : TÌM HIỂU VỀ NGÔN NGỮ JAVA 1.1.Tổng quan về Java 1.1.1.Java Năm 1991, một nhóm kỹ sư của Sun Microsystems muốn lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng… Ban đầu, họ định dùng C và C++ nhưng trình biên dịch C/C++ lại phụ thuộc vào từng loại CPU. Do đó, họ đã bắt tay vào xây dựng một ngôn ngữ chạy nhanh, gọn, hiệu quả, độc lập thiết bị ngôn ngữ “Oak” ra đời vào năm 1995, sau đó được đổi tên thành Java. 3 Ngôn ngữ lập trình Java được Sun Microsystems đưa ra giới thiệu vào tháng 6 năm 1995 đã nhanh chóng trở thành một ngôn ngữ lập trình của các lập trình viên chuyên nghiệp. Java được xây dựng dựa trên nền tảng của C C++ nghĩa là Java sử dụng cú pháp của C đặc trưng hướng đối tượng của C++. Javangôn ngữ vừa biên dịch vừa thông dịch. Đầu tiên mã nguồn được biên dịch thành dạng bytecode. Sau đó đượ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ể chạy trên các nền phần cứng khác nhau. Ngày nay, Java được sử dụng rộng rãi, không chỉ để viết các ứng dụng trên máy cục bộ hay trên mạng mà còn để xây dựng các trình điều khiển thiết bị di động, PDA, 1.1.2.Các đặc trưng của ngôn ngữ Java 1.Đơn giản Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học quen thuộc với đa số người lập trình. Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++ như: • Loại bỏ thao tác con trỏ, thao tác định nghĩa chồng toán tử (operator overloading)… • Không cho phép đa kế thừa (Multi-inheritance) mà sử dụng các giao diện (interface) • Không sử dụng lệnh “goto” cũng như file header (.h). • Loại bỏ cấu trúc “struct” “union”. 2.Hướng đối tượng Java là ngôn ngữ lập trình hoàn toàn hướng đối tượng: • Mọi thực thể trong hệ thống đều được coi là một đối tượng, tức là một thể hiện cụ thể của một lớp xác định. • Tất cả các chương trình đều phải nằm trong một class nhất định. 4 • Không thể dùng Java để viết một chức năng mà không thuộc vào bất kì một lớp nào. Tức là Java không cho phép định nghĩa dữ liệu hàm tự do trong chương trình. 3.Độc lập phần cứng hệ điều hành Đối với các ngôn ngữ lập trình truyền thống như C/C++, phương pháp biên dịch được thực hiện như sau : Cách biên dịch truyền thống Với mỗi một nền phần cứng khác nhau, có một trình biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng ấy. Do vậy, khi chạy trên một nền phần cứng khác, bắt buộc phải biên dịch lại mà nguồn. Đối các chương trình viết bằng Java, trình biên dịch Javac sẽ biên dịch mã nguồn thành dạng bytecode. Sau đó, khi chạy chương trình trên các nền phần cứng khác nhau, máy ảo Java dùng trình thông dịch Java để chuyển mã bytecode thành dạng chạy được trên các nền phần cứng tương ứng. Do vậy, khi thay đổi nền phần cứng, không phải biên dịch lại mã nguồn Java. Byte code 5 Window Trình biên dịch Chương trình viết bằng C/C++ Mac Trình biên dịch IBM Trình biên dịch Window Trình thông dịch Java (Java interpreter) Mac Trình biên dịch Chương trình viết bằng Java IBM Dịch chương trình Java 4.Mạnh mẽ Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu: • Kiểu dữ liệu phải được khai báo tường minh. • Java không sử dụng con trỏ các phép toán con trỏ. • Java kiểm tra việc truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước mảng. • Quá trình cấp phát, giải phóng bộ nhớ cho biến được thực hiện tự động, nhờ dịch vụ thu nhặt những đối tượng không còn sử dụng nữa (garbage collection). • Cơ chế bẫy lỗi của Java giúp đơn giản hóa qúa trình xử lý lỗi hồi phục sau lỗi. 5.Bảo mật Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức để kiểm soát tính an toàn: • Ở mức thứ nhất, dữ liệu các phương thức được đóng gói bên trong lớp. Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp. • Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, tuân theo các nguyên tắc của Java. • Mức thứ ba được đảm bảo bởi trình thông dịch. Chúng kiểm tra xem bytecode có đảm bảo các qui tắc an toàn trước khi thực thi. • Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống. 6.Phân tán Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp Mạng (java.net). Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụng rộng rãi như là công cụ phát triển trên Internet, nơi sử dụng nhiều nền khác nhau. 7.Đa luồng 6 Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi các công việc cùng đồng thời đồng bộ giữa các luồng. 8.Linh động Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường mở. Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập đối tượng lúc chạy. Điều này cho phép khả năng liên kết động mã. 1.2.Kiến trúc chương trình xây dựng trên Java 1.2.1.Kiến trúc chương trình Java Dạng cơ bản của một tập tin mã nguồn Java có cấu trúc như sau : package packageName; // Khai báo tên gói, nếu có import java.awt.*; // Khai báo tên thư viện sẵn có, nếu cần dùng class className // Khai báo tên lớp { /* Đây là dòng ghi chú */ int var; // Khai báo biến public void methodName() // Khai báo tên phương thức { /* Phần thân của phương thức */ statement (s); // Lệnh thực hiện } } Một tệp mã nguồn Java có thể có ba phần chính: • Phần khai báo tên gói (khối) bằng từ khoá package. • Phần khai báo thư viện tham khảo bằng từ khoá import. • Phần khai báo nội dung lớp bằng từ khoá class. 1.Khai báo Gói (package) Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Đây là một cách hữu hiệu để lưu trữ các lớp gần giống nhau hoặc 7 có cùng một module thành một khối thống nhất. Cú pháp khai báo tên gói bằng từ khoá package.Các gói gồm có các thành phần là các lớp, các giao diện các gói còn có liên quan với nhau. Việc tổ chức thành các gói có một số lợi ích sau: - Cho phép nhóm các thành phần cùng đặc trưng, chức năng thành một đơn vị, thuận tiện cho việc quản lý. - Tránh xung đột tên. - Cho phép qui định phạm vi truy cập các thành phần mở mức gói. Cú pháp truy cập tới thành phần của gói <Tên gói>.<Tên thành phần> Cú pháp nạp các thành phần trong gói vào trong một chương trình. Import <tên gói>.* ; //tên gói Cú pháp khai báo nạp các thành phần trong gói con như sau: Import <tên gói>.<tên gói con>.* ; Cách tạo ra các gói trong Java Cú pháp khai báo để đưa một lớp đối tượng vào một gói Package <tên gói> ; 2.Khai báo thư viện Khai báo thư viện để chỉ ra những thư viện đã được định nghĩa sẵn mà chương trình sẽ tham khảo tới. Cú pháp khai báo thư viện với từ khoá import như sau: import <Tên thư viện>; Java chuẩn cung cấp một số thư viện như sau: • java.lang: cung cấp các hàm thao tác trên các kiểu dữ liệu cơ bản, xử lí lỗi và ngoại lệ, xử lí vào ra trên các thiết bị chuẩn như bàn phím màn hình. • java.applet: cung cấp các hàm cho xây dựng các applet • java.awt: cung cấp các hàm cho xây dựng các ứng dụng đồ hoạ với các thành phần giao diện multi media • java.io: cung cấp các hàm xử lí vào/ra trên các thiêt bị chuẩn các thiết bị ngoại vi. 8 • java.util: cung cấp các hàm tiện ích trong xử lí liên quan đến các kiểu dữ liệu có cấu trúc như Date, Stack, Vector. Ví dụ : nếu trong chương trình cần đến các thao tác chuyển kiểu đổi dữ liệu tường minh (từ kiểu string sang kiểu int), thì ta sẽ phải tham khảo thư viện java.lang: import java.lang.*; 3.Khai báo lớp Phần khai báo lớp nội dung của lớp, phần này luôn bắt buộc phải có đối với một tệp mã nguồn Java: • Khai báo tên lớp với từ khoá class. • Khái báo các thuộc tính của lớp. • Khai báo các phương thức của lớp 1.2.2.Các kiểu dữ liệu toán tử cơ bản trên Java 1.Khai báo biến Cú pháp khai báo biến: dataType varName; Trong đó, dataType là kiểu dữ liệu của biến, varName là tên biến. Trong Java, việc đặt tên biến phải tuân theo các quy tắc sau: • Chỉ được bắt đầu bằng một kí tự (chữ), hoặc một dấu gạch dưới , hoặc một kí tự $ • Không có khoảng trắng giữa tên • Bắt đầu từ kí tự thứ hai, có thể dùng các kí tự (chữ), chữ số, dấu $, dấu gạch dưới • Không trùng với các từ khoá • Có phân biệt chữ hoa chữ thường Phạm vi hoạt động của biến : Một biến có phạm vi hoạt động trong toàn bộ khối lệnh mà nó được khai báo. Một khối lệnh bắt đầu bằng dấu “{” kết thúc bằng dấu “}”: • Nếu biến được khai báo trong một cấu trúc lệnh điều khiển, biến đó có phạm vi hoạt động trong khối lệnh tương ứng. 9 • Nếu biến được khai báo trong một phương thức (Không nằm trong khối lệnh nào), biến đó có phạm vi hoạt động trong phương thức tương ứng: có thể được sử dụng trong tất cả các khối lệnh của phương thức. • Nếu biến được khai báo trong một lớp (Không nằm trong trong một phương thức nào), biến đó có phạm vi hoạt động trong toàn bộ lớp tương ứng: có thể được sử dụng trong tất cả các phương thức của lớp. 2. Kiểu dữ liệu Trong Java, kiểu dữ liệu được chia thành hai loại: • Các kiểu dữ liệu cơ bản • Các kiểu dữ liệu đối tượng Kiểu dữ liệu cơ bản : Java cung cấp các kiểu dữ liệu cơ bản như sau: byte: Dùng để lưu dữ liệu kiểu số nguyên có kích thước một byte (8 bít). Phạm vi biểu diễn giá trị từ -128 đến 127. Giá trị mặc định là 0. char: Dùng để lưu dữ liệu kiểu kí tự hoặc số nguyên không âm có kích thước 2 byte (16 bít). Phạm vi biểu diễn giá trị từ 0 đến u\ffff. Giá trị mặc định là 0. boolean: Dùng để lưu dữ liệu chỉ có hai trạng thái đúng hoặc sai (độ lớn chỉ có 1 bít). Phạm vi biểu diễn giá trị là {“True”, “False”}. Giá trị mặc định là False. short: Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 2 byte (16 bít). Phạm vi biểu diễn giá trị từ - 32768 đến 32767. Giá trị mặc định là 0. int: Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 4 byte (32 bít). Phạm vi biểu diễn giá trị từ -2,147,483,648 đến 2,147,483,647. Giá trị mặc định là 0. float: Dùng để lưu dữ liệu có kiểu số thực, kích cỡ 4 byte (32 bít). Giá trị mặc định là 0.0f. double: Dùng để lưu dữ liệu có kiểu số thực có kích thước lên đến 8 byte. Giá trị mặc định là 0.00d long: Dùng để lưu dữ liệu có kiểu số nguyên có kích thước lên đến 8 byte. Giá trị mặc định là 0l. Kiểu dữ liệu đối tượng 10 [...]... thể có cùng danh sách tham số có cùng kiểu trả về 2.Đa hình Đa hình là việc triệu gọi đến các phương thức nạp chồng của đối tượng Khi một phương thức nạp chồng được gọi, chương trình sẽ dựa vào kiểu các tham số kiểu trả về để gọi phương thức của đối tượng cho phù hợp CHƯƠNG II : TÌM HIỂU VỀ LẬP TRÌNH MẠNG 2.1.Căn bản về mạng máy tính 2.1.1.Định nghĩa mạng máy tính Mạng máy tính là một tập hợp... cho máy khách) lớp ServerSocket (thường được dùng như “ổ cắm điện” đặt trên máy chủ) Hai lớp này được đặt trong gói thư viện Java. net 2.2.3 .Tìm hiểu một số lớp cần thiết của gói thư viện Java. net 1.Lớp InetAddress Vì địa chỉ Internet theo số IP theo tên rất thường dùng khi kết nối vào mạng cho nên Java xây dựng hẳn một lớp InetAddress dành riêng cho việc quản lý 33 địa chỉ theo tên theo số Lớp... [extends ] { // ; } Cài đặt giao diện : Giao diện trình bày các phương thức chung của các lớp đối tượng cài đặt nó Lớp đối tượng cài đặt giao diện có cú pháp như sau : Class implements { // cài đặt các phương thức của giao diện ; } 1.3.5.Đa hình 1.Nạp chồng Java cho phép trong cùng một lớp, có thể khai báo nhiều phương thức có... dụ a tương đương với a = a - 1 Cộng gán giá trị Cộng các giá trị của toán hạng bên trái vào toán hạng bên phải gán giá trị trả về vào toán hạng bên trái Ví dụ c += a tương đương c = c + a Trừ gán giá trị Trừ các giá trị của toán hạng bên trái vào toán toán hạng bên phải gán giá trị trả về vào toán hạng bên trái Ví dụ c -= a tương đương với c = c a Nhân gán Nhân các giá trị của toán hạng... các phương thức mẫu các thuộc tính hằng nên việc sử dụng giao tiếp phải thông qua một lớp có cài đặt giao tiếp đó Việc khai báo một lớp có cài đặt giao tiếp được thực hiện thông qua từ khoá implements như sau: class implements { } • Tính chất tên lớp được sử dụng như trong khai báo lớp thông thường • Các giao tiếp: một lớp có thể cài đặt nhiều giao tiếp Các... các thiết bị khác của mạng Mạng hoạt động theo nguyên lý nối song song nên nếu có một nút bị hỏng, mạng vẫn hoạt động bình thường Mạng có thể mở rộng hoặc thu hẹp tùy theo yêu cầu của người sử dụng, tuy nhiên mở rộng phụ thuộc vào khả năng của trung tâm 2.1.5.Các giao thức mạng 1.Họ giao thức TCP/IP Để hai hay nhiều máy có thể giao tiếp được với nhau, chúng phải dùng một ngôn ngữ chung : chẳng hạn... trái với toán toán hạng bên phải gán giá trị trả về vào toán hạng bên trái Ví dụ c *= a tương đương với c = c*a Chia gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải gán giá trị trả về vào toán hạng bên trái Ví dụ c /= a tương đương với c = c/a Lấy số dư gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải gán giá trị số dư vào toán hạng bên trái Ví dụ c... liệu tạo nên cấu trúc của mạng Hai khái niệm đường truyền cấu trúc là những đặc trưng cơ bản của mạng máy tính 25 Một mô hình các máy tính liên kết trong mạng 2.1.2.Nhu cầu phát triển mạng máy tính Ngày nay, khi máy tính được sử dụng một cách rộng rãi số lượng máy tính trong một văn phòng hay cơ quan được tăng lên nhanh chóng thì việc kết nối chúng trở nên vô cùng cần thiết sẽ mang lại nhiều hiệu... nhiều máy khách 2.2.2 .Lập trình mạng thông qua Socket Như vậy trước khi yêu cầu một dịch vụ trên máy chủ thực hiện điều gì đó, máy khách (client) phải có khả năng kết nối được với máy chủ Quá trình kết nối này được Java thực hiện thông qua một cơ chế trừu tượng hóa gọi là Socket (tạm gọi là “cơ chế ổ cắm”) Kết nối giữa máy khách máy chủ tương tự như việc cắm phích cắm điện vào ổ cắm điện Máy khách... được một hệ thống mạng chạy thật tốt, thật an toàn với lợi ích kinh tế cao đang rất được quan tâm 2.1.3.Phân loại mạng máy tính Do hiện nay mạng máy tính được phát triển khắp nơi với những ứng dụng ngày càng đa dạng cho nên việc phân loại mạng máy tính là một việc rất phức tạp Dựa theo phạm vi phân bố của mạng ta có thể phân ra các loại mạng như sau: 27 • LAN (Local Area Network) -mạng cục bộ: kết nối

Ngày đăng: 11/03/2014, 22:12

Từ khóa liên quan

Mục lục

  • CHƯƠNG I : TÌM HIỂU VỀ NGÔN NGỮ JAVA

    • 1.1.Tổng quan về Java

      • 1.1.1.Java

      • 1.1.2.Các đặc trưng của ngôn ngữ Java

    • 1.2.Kiến trúc chương trình xây dựng trên Java

      • 1.2.1.Kiến trúc chương trình Java

      • 1.2.2.Các kiểu dữ liệu và toán tử cơ bản trên Java

      • 1.2.3.Các cấu trúc lệnh trên Java

    • 1.3.Kế thừa và đa hình trên Java

      • 1.3.1.Kế thừa đơn

      • 1.3.2. Kế thừa bội

      • 1.3.3.Lớp trừu tượng

      • 1.3.4.Giao diện (Interface)

      • 1.3.5.Đa hình

  • CHƯƠNG II : TÌM HIỂU VỀ LẬP TRÌNH MẠNG

    • 2.1.Căn bản về mạng máy tính

      • 2.1.1.Định nghĩa mạng máy tính

      • 2.1.2.Nhu cầu phát triển mạng máy tính

      • 2.1.3.Phân loại mạng máy tính

      • 2.1.4.Một số topo mạng thông dụng

      • 2.1.5.Các giao thức mạng

    • 2.2.Giao tiếp trên mạng theo mô hình khách/chủ(Client/Server) và khái niệm socket.

      • 2.2.1.Giao tiếp theo mô hình khách/chủ (Client/Server)

      • 2.2.2.Lập trình mạng thông qua Socket

      • 2.2.3.Tìm hiểu một số lớp cần thiết của gói thư viện Java.net

    • 2.3.Luồng, đa luồng (Multi-thread)

      • 2.3.1.Luồng Một luồng là một thuộc tính duy nhất của Java. Nó là đơn vị nhỏ nhất của đoạn mã có thể thi hành được mà thực hiện một công việc riêng biệt. Ngôn ngữ Java và máy ảo Java cả hai là các hệ thống đươc phân luồng

      • 2.3.2.Đa luồng

      • 2.3.3.Tạo và quản lý luồng

      • 2.3.4.Vòng đời của Luồng

      • 2.3.5.Phạm vi của luồng và các phương thức của lớp luồng

      • 2.3.6.Thời gian biểu luồng

      • 2.3.7.Luồng hiểm

      • 2.3.8.Đa luồng với Applets

      • 2.3.9.Nhóm luồng

  • CHƯƠNG III : CHƯƠNG TRÌNH ỨNG DỤNG LẬP TRÌNH MẠNG BẰNG NGÔN NGỮ JAVA

    • 3.1.Giới thiệu

    • 3.2.Chương trình ứng dụng 

      • 3.2.1.Mô hình

      • 3.2.2.Thiết kế chương trình

    • 3.3.Xây dựng chương trình

      • 3.3.1. Xây dựng Server

      • 3.3.2.Xây dựng Client

      • 3.3.3. Nhận xét

      • 3.3.4.Kết luận

  • TÀI LIỆU THAM KHẢO

  • LINK DEMO:

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

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

Tài liệu liên quan