Lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các ứng dụng
doanh nghiệp. Một chương trình mạng được viết ra để các chương trình trên các máy
tính khác nhau có thể truyền tin với nhau một cách hiệu quả và an toàn cho dù chúng
được cài đặt trên mạng LAN, WAN hay mạng toàn cầu Internet, đây là điều căn bản đối
với sự thành công của nhiều hệ thống.
Java là ngôn ngữ lập trình hướng đối tượng thuần túy với 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, Java là ngôn ngữ ngay từ khi ra đời đã hướng đến lập trình mạng nên việc viết một
chương trình lập trình mạng bằng Java dễ dàng hơn nhiều so với các ngôn ngữ khác.
Giáo trình này bao gồm 10 chương:
Chương 1: Giới thiệu những khái niệm căn bản về mạng máy tínhđể người đọc có
thể tiếp cận với các chương tiếp theo. Trong chương này chúng ta sẽ đi vào xem xét
mạng vật lý, phần cứng được sử dụng trong các mạng LAN. Tiếp theo chúng ta sẽ tìm
hiểu mô hình phân tầng OSI bảy tầng, và sự tương ứng của họ giao thức TCP/IP với các
tầng trong mô hình OSI. Sau đó chúng ta sẽ đi vào tìm hiểu các giao thức mạng, giao
thức Internet, và giao thức e-mail.
Chương 2: Giới thiệu ngôn ngữ lập trình Java. Chương này trình bày các khái niệm
căn bản về ngôn ngữ lập trình Java. Giới thiệu lịch sử phát triển và cấu trúc của máy ảo
Java. Những đặc trưng đã tạo nên sức mạnh của ngôn ngữ Java cũng được giới thiệu
trong chương này. Cũng trong chương này chúng ta sẽ đi vào tìm hiểu cách cấu hình và
cài đặt môi trường biên dịch, chạy và soạn thảo ngôn ngữ Java. Tiếp đến ta sẽ đi vào tìm
hiểu các thành phần cơ bản của Java như kiểu dữ liệu, cấu trúc lệnh tuần tự rẽ nhánh,
lặp, và nhảy. Tiếp theo chúng ta sẽ đi vào tìm hiểu các khái niệm liên quan đến lập trình
hướng đối tượng trong Java như lớp, phương thức, thuộc tính, các từ khóa bổ trợ như
static, final, abstract, thừa kế và tính đa hình trong Java. Một trong những khái niệm mới
mà các ngôn ngữ truyền thống trước đây không có là ngoại lệ và đón bắt ngoại lệ trong
Java cũng được giới thiệu.
Chương 3: Các luồng vào ra. Chương này giới thiệu khái niệm vào ra bằng các
luồng dữ liệu. Trước tiên ta sẽ tìm hiểu về các luồng và ý nghĩa của luồng trong chương
trình Java. Tiếp đến chúng ta sẽ lần lượt tìm hiểu các luồng vào ra chuẩn trong gói làm
việc với console. Các luồng trừu tượng java.io.InputStream, java.io.OutputStream là các
luồng cơ bản để từ đó xây dựng nên các luồng cụ thể. Luồng được chia thành các nhóm
như luồng byte và luồng ký tự. Từ phiên bản Java 1.4 một đặc trưng vào ra mới trong
Java được đưa vào cũng được giới thiệu trong chương này. Việc nắm vững kiến thức ở
chương này cũng giúp cho việc lập trình ứng dụng mạng trở nên đơn giản hơn vì thực
chất của việc truyền và nhận dữ liệu giữa các ứng dụng mạng là việc đọc và ghi các
luồng.
Chương 4: Lập trình đa tuyến đoạn. Trong các ngôn ngữ lập trình trước đây các
ứng dụng hầu hết là các ứng dụng đơn tuyến đoạn. Để tăng tốc độ xử lý và giải quyết vấn
đề tương tranh của các ứng dụng nói chung và ứng dụng mạng nói riêng ta cần sử dụng
khái niệm đa tuyến đoạn. Phần đầu của chương này trình bày các khái niệm căn bản về
tiến trình, tuyến đoạn. Tiếp đến chúng ta sẽ xem xét các cách cài đặt một ứng dụng tuyến
đoạn trong Java bằng lớp Thread và thực thi giao tiếp Runnable. Sau đó ta sẽ đi vào tìm
hiểu các phương thức của lớp Thread. Sự đồng bộ hóa và cách cài đặt một chương trình
đồng bộ hóa cũng được giới thiệu trong chương này.
Chương 5: Lập trình mạng với các lớp InetAddress, URL và URLConnection.Lớp
InetAddress là lớp căn bản đầu tiên trong lập trình mạng mà ta cần tìm hiểu. Nó chỉ ra
cách một chương trình Java tương tác với hệ thống tên miền. Tiếp đến ta sẽ đi vào tìm
hiểu các khái niệm về URI, URL,URN và lớp biểu diễn URL trong Java. Cách sử dụng
URL để tải về thông tin và tệp tin từ các server. Sau đó ta đi vào tìm hiểu lớp
URLConnection, lớp này đóng vai trò như một động cơ cho lớp URL.
Sưu tầm bởi: www.daihoc.com.vn
Chương 6: Lập trình Socket cho giao thức TCP. Trong chương này chúng ta sẽ tìm
hiểu cách lập trình cho mô hình client/server và các kiểu kiến trúc client/server. Các lớp
Socket và ServerSocket được trình bày chi tiết trong chương này để lập các chương trình
cho giao thức TCP.
Chương 7: Lập trình ứng dụng cho giao thức UDP. Chương này giới thiệu giao
thức UDP và các đặc trưng của giao thức này. Tiếp đến ta đi vào tìm hiểu các lớp
DatagramPacket và DatagramSocket để viết các chương trình ứng dụng mạng cho giao
thức UDP.
Chương 8: Tuần tự hóa đối tượng và ứng dụng trong lập trình mạng. Trình bày các
vấn đề về tuần tự hóa và ứng dụng của tuần tự hóa trong lập trình mạng.
Chương 9: Phân tán đối tượng bằng Java RMI. Chương này tìm hiểu chủ đề về lập
trình phân tán đối tượng bằng kỹ thuật gọi phương thức RMI (Remote Method
Invocation).
Chương 10:Xử lý cơ sở dữ liệu trong Java. Trình bày cách thức kết nối các cơ sở
dữ liệu và xử lý cơ sở dữ liệu bằng Java thông qua giao diện lập trình ứng dụng JDBC.
Tìm hiểu về lập trình mạng tốt nhất là trên các hệ thống mạng thực sự với nhiều
máy tính được kết nối vật lý. Tuy nhiên trong giáo trình này hầu hết các ví dụ được trình
bày để bạn đọc có thể lập trình và thử nghiệm các ứng dụng mạng trên các máy đơn.
Mặc dù đã hết sức cố gắng để trình bày giáo trình một cách dễ hiểu với các ví dụ
minh họa giúp bạn đọc có thể thử nghiệm ngay sau khi tìm hiểu các vấn đề lý thuyết,
nhưng chắc chắn giáo trình này không thể tránh khỏi những thiếu sót nhất định. Rất mong
sự góp ý và phê bình của các bạn độc giả. Mọi thắc mắc và góp ý các bạn có thể gửi về
theo địa chỉ e-mail sau:lequocdinh@vnn.vnhoặc hoan_td2001@yahoo.com
Để hoàn thành giáo trình này các tác giả đã nhận được sự giúp đỡ rất nhiều từ
bạn bè, đồng nghiệp và những người thân.
Xin chân thành cảm ơn tới tất cả mọi người.
Nhóm tác giả
214 trang |
Chia sẻ: oanhnt | Lượt xem: 1827 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình mạng Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Sưu tầm bởi: www.daihoc.com.vn
Lời mở đầu
Lập trình mạng là một trong những nhiệm vụ căn bản để phát triển các ứng dụng
doanh nghiệp. Một chương trình mạng được viết ra để các chương trình trên các máy
tính khác nhau có thể truyền tin với nhau một cách hiệu quả và an toàn cho dù chúng
được cài đặt trên mạng LAN, WAN hay mạng toàn cầu Internet, đây là điều căn bản đối
với sự thành công của nhiều hệ thống.
Java là ngôn ngữ lập trình hướng đối tượng thuần túy với 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,…Java là ngôn ngữ ngay từ khi ra đời đã hướng đến lập trình mạng nên việc viết một
chương trình lập trình mạng bằng Java dễ dàng hơn nhiều so với các ngôn ngữ khác.
Giáo trình này bao gồm 10 chương:
Chương 1: Giới thiệu những khái niệm căn bản về mạng máy tính để người đọc có
thể tiếp cận với các chương tiếp theo. Trong chương này chúng ta sẽ đi vào xem xét
mạng vật lý, phần cứng được sử dụng trong các mạng LAN. Tiếp theo chúng ta sẽ tìm
hiểu mô hình phân tầng OSI bảy tầng, và sự tương ứng của họ giao thức TCP/IP với các
tầng trong mô hình OSI. Sau đó chúng ta sẽ đi vào tìm hiểu các giao thức mạng, giao
thức Internet, và giao thức e-mail.
Chương 2: Giới thiệu ngôn ngữ lập trình Java. Chương này trình bày các khái niệm
căn bản về ngôn ngữ lập trình Java. Giới thiệu lịch sử phát triển và cấu trúc của máy ảo
Java. Những đặc trưng đã tạo nên sức mạnh của ngôn ngữ Java cũng được giới thiệu
trong chương này. Cũng trong chương này chúng ta sẽ đi vào tìm hiểu cách cấu hình và
cài đặt môi trường biên dịch, chạy và soạn thảo ngôn ngữ Java. Tiếp đến ta sẽ đi vào tìm
hiểu các thành phần cơ bản của Java như kiểu dữ liệu, cấu trúc lệnh tuần tự rẽ nhánh,
lặp, và nhảy. Tiếp theo chúng ta sẽ đi vào tìm hiểu các khái niệm liên quan đến lập trình
hướng đối tượng trong Java như lớp, phương thức, thuộc tính, các từ khóa bổ trợ như
static, final, abstract, thừa kế và tính đa hình trong Java. Một trong những khái niệm mới
mà các ngôn ngữ truyền thống trước đây không có là ngoại lệ và đón bắt ngoại lệ trong
Java cũng được giới thiệu.
Chương 3: Các luồng vào ra. Chương này giới thiệu khái niệm vào ra bằng các
luồng dữ liệu. Trước tiên ta sẽ tìm hiểu về các luồng và ý nghĩa của luồng trong chương
trình Java. Tiếp đến chúng ta sẽ lần lượt tìm hiểu các luồng vào ra chuẩn trong gói làm
việc với console. Các luồng trừu tượng java.io.InputStream, java.io.OutputStream là các
luồng cơ bản để từ đó xây dựng nên các luồng cụ thể. Luồng được chia thành các nhóm
như luồng byte và luồng ký tự. Từ phiên bản Java 1.4 một đặc trưng vào ra mới trong
Java được đưa vào cũng được giới thiệu trong chương này. Việc nắm vững kiến thức ở
chương này cũng giúp cho việc lập trình ứng dụng mạng trở nên đơn giản hơn vì thực
chất của việc truyền và nhận dữ liệu giữa các ứng dụng mạng là việc đọc và ghi các
luồng.
Chương 4: Lập trình đa tuyến đoạn. Trong các ngôn ngữ lập trình trước đây các
ứng dụng hầu hết là các ứng dụng đơn tuyến đoạn. Để tăng tốc độ xử lý và giải quyết vấn
đề tương tranh của các ứng dụng nói chung và ứng dụng mạng nói riêng ta cần sử dụng
khái niệm đa tuyến đoạn. Phần đầu của chương này trình bày các khái niệm căn bản về
tiến trình, tuyến đoạn. Tiếp đến chúng ta sẽ xem xét các cách cài đặt một ứng dụng tuyến
đoạn trong Java bằng lớp Thread và thực thi giao tiếp Runnable. Sau đó ta sẽ đi vào tìm
hiểu các phương thức của lớp Thread. Sự đồng bộ hóa và cách cài đặt một chương trình
đồng bộ hóa cũng được giới thiệu trong chương này.
Chương 5: Lập trình mạng với các lớp InetAddress, URL và URLConnection. Lớp
InetAddress là lớp căn bản đầu tiên trong lập trình mạng mà ta cần tìm hiểu. Nó chỉ ra
cách một chương trình Java tương tác với hệ thống tên miền. Tiếp đến ta sẽ đi vào tìm
hiểu các khái niệm về URI, URL,URN và lớp biểu diễn URL trong Java. Cách sử dụng
URL để tải về thông tin và tệp tin từ các server. Sau đó ta đi vào tìm hiểu lớp
URLConnection, lớp này đóng vai trò như một động cơ cho lớp URL.
Sưu tầm bởi: www.daihoc.com.vn
Chương 6: Lập trình Socket cho giao thức TCP. Trong chương này chúng ta sẽ tìm
hiểu cách lập trình cho mô hình client/server và các kiểu kiến trúc client/server. Các lớp
Socket và ServerSocket được trình bày chi tiết trong chương này để lập các chương trình
cho giao thức TCP.
Chương 7: Lập trình ứng dụng cho giao thức UDP. Chương này giới thiệu giao
thức UDP và các đặc trưng của giao thức này. Tiếp đến ta đi vào tìm hiểu các lớp
DatagramPacket và DatagramSocket để viết các chương trình ứng dụng mạng cho giao
thức UDP.
Chương 8: Tuần tự hóa đối tượng và ứng dụng trong lập trình mạng. Trình bày các
vấn đề về tuần tự hóa và ứng dụng của tuần tự hóa trong lập trình mạng.
Chương 9: Phân tán đối tượng bằng Java RMI. Chương này tìm hiểu chủ đề về lập
trình phân tán đối tượng bằng kỹ thuật gọi phương thức RMI (Remote Method
Invocation).
Chương 10:Xử lý cơ sở dữ liệu trong Java. Trình bày cách thức kết nối các cơ sở
dữ liệu và xử lý cơ sở dữ liệu bằng Java thông qua giao diện lập trình ứng dụng JDBC.
Tìm hiểu về lập trình mạng tốt nhất là trên các hệ thống mạng thực sự với nhiều
máy tính được kết nối vật lý. Tuy nhiên trong giáo trình này hầu hết các ví dụ được trình
bày để bạn đọc có thể lập trình và thử nghiệm các ứng dụng mạng trên các máy đơn.
Mặc dù đã hết sức cố gắng để trình bày giáo trình một cách dễ hiểu với các ví dụ
minh họa giúp bạn đọc có thể thử nghiệm ngay sau khi tìm hiểu các vấn đề lý thuyết,
nhưng chắc chắn giáo trình này không thể tránh khỏi những thiếu sót nhất định. Rất mong
sự góp ý và phê bình của các bạn độc giả. Mọi thắc mắc và góp ý các bạn có thể gửi về
theo địa chỉ e-mail sau:lequocdinh@vnn.vn hoặc hoan_td2001@yahoo.com
Để hoàn thành giáo trình này các tác giả đã nhận được sự giúp đỡ rất nhiều từ
bạn bè, đồng nghiệp và những người thân.
Xin chân thành cảm ơn tới tất cả mọi người.
Nhóm tác giả
Sưu tầm bởi: www.daihoc.com.vn
I
MỤC LỤC
Lời mở đầu
Chương 1:Các khái niệm căn bản về mạng và giao thức .............................................. 1
1. Mạng máy tính .................................................................................................... 1
1.1. Các đường WAN ............................................................................. 1
1.2 .Giao thức Ethernet .......................................................................... 2
1.3. Các thành phần vật lý ...................................................................... 3
2. Mô hình phân tầng .............................................................................................. 6
2.1. Tầng 1:Tầng vật lý........................................................................... 7
2.2. Tầng 2: Tầng liên kết dữ liệu ........................................................... 7
2.3. Tầng 3: Tầng mạng ......................................................................... 7
2.4. Tầng 4:Tầng giao vận ..................................................................... 7
2.5. Tầng 5: Tầng phiên ...........................................................................
2.6. Tầng 6:Tầng trình diễn .................................................................... 7
2.7. Tầng 7:Tầng ứng dụng .................................................................... 7
3. Các giao thức mạng ............................................................................................ 8
3.1. Các giao thức cơ bản ...................................................................... 8
3.2. Các giao thức Internet ................................................................... 14
4. Soket ................................................................................................................. 17
5. Dịch vụ tên miền .............................................................................................. 17
5.1. Các server tên miền ...................................................................... 18
5.2. Nslookup ....................................................................................... 19
6. Internet và Extranet .......................................................................................... 20
6.1. Intranet và Extranet20
6.2. Firewall .......................................................................................... 20
6.3. Proxy Server ................................................................................. 20
Chương 2 : Giới thiệu ngôn ngữ lập trình Java ........................................................... 21
1. Giới thiệu công nghệ Java ................................................................................ 21
1.1. Lịch sử phát triển........................................................................... 21
1.2. Cấu trúc của máy ảo Java – Java Virtual Machine ........................ 21
1.3. Các đặc trưng của Java ................................................................ 21
1.4. Các ấn bản Java ........................................................................... 22
1.5. Công cụ phát triển ......................................................................... 23
1.6. Các kiểu ứng dụng trong Java....................................................... 23
1.7. Cài đặt chương trình dịch Java và các công cụ ............................. 23
1.8. Một số ví dụ mở đầu ..................................................................... 25
2. Ngôn ngữ lập trình Java .................................................................................... 27
2.1. Cấu trúc tệp của một chương trình Java ....................................... 27
2.2. Định danh, kiểu dữ liệu và khai báo biến ....................................... 28
2.3. Các kiểu dữ liệu nguyên thủy (primitive datatype) ......................... 28
2.4. Khai báo các biến .......................................................................... 30
2.5. Các lệnh trong Java ...................................................................... 31
2.6 Các lớp và các đối tượng trong Java .............................................. 36
2.7. Giao tiếp – Interface ...................................................................... 48
2.8. Các gói và sử dụng gói trong Java ................................................ 50
2.9. Quản lý ngoại lệ ............................................................................ 52
Sưu tầm bởi: www.daihoc.com.vn
II
Chương 3: Các luồng vào ra ....................................................................................... 59
1. Khái niệm về luồng trong Java ........................................................................... 59
1.1. Khái niệm luồng(stream) ............................................................... 59
2. Luồng xuất nhập chuẩn ..................................................................................... 60
3. Luồng nhị phân .................................................................................................. 60
3.1. Lớp InputStream ........................................................................... 60
3.2. Lớp OutputStream ......................................................................... 61
3.3. Các luồng xuất nhập mảng byte .................................................... 62
3.4. Luồng xuất nhập tập tin ................................................................. 64
3.5. Truy nhập tệp ngẫu nhiên .............................................................. 66
3.6. Luồng PrintStream ....................................................................... 68
4. Luồng ký tự ..................................................................................................... 68
4.1. Sự tương ứng giữa luồng byte và luồng ký tự ............................... 68
4.2. Mã hóa ký tự ................................................................................. 69
4.3 Lớp Writer ...................................................................................... 70
4.4. Lớp Reader ................................................................................... 70
4.5. Lớp OutputStreamWriter ............................................................... 70
4.6. Lớp InputStreamReader ................................................................ 71
4.7. Lớp FileWriter ............................................................................... 71
4.8. Lớp FileReader ............................................................................. 72
5. Luồng đệm ........................................................................................................ 73
6. Luồng vào ra mới – New Input Output ............................................................... 74
6.1. Căn bản về NIO ............................................................................ 74
6.2. Buffer (Các vùng đệm) .................................................................. 74
6.3. Các kênh (Channel) ...................................................................... 76
6.4. Charset và Selector ....................................................................... 76
6.5. Đọc tệp .......................................................................................... 77
6.6. Ghi tệp tin ...................................................................................... 80
7. Kết luận ................................................................................................................... 82
Chương 4: Lập trình đa tuyến đoạn ............................................................................ 83
1.Tổng quan83
1.1. Lập trình đơn tuyến đoạn .............................................................. 83
1.2. Lập trình đa tiến trình .................................................................... 83
1.3. Lập trình đa tuyến đoạn................................................................. 84
2. Tạo các ứng dụng đa tuyến đoạn với lớp Thread .............................................. 86
3. Tạo ứng dụng đa tuyến đoạn với giao tiếp Runnable ........................................ 87
4. Sự đồng bộ hóa ................................................................................................. 88
4.1. Các phương thức synchronized .................................................... 88
4.2.Lệnh synchronized ......................................................................... 89
5. Phương thức wait và notify ................................................................................ 90
6. Lập lịch cho tuyến đoạn ..................................................................................... 91
7. Hoài vọng-Deadlock .......................................................................................... 92
8. Điều khiển tuyến đoạn ....................................................................................... 94
8.1. Ngắt một tuyến đoạn Thread ......................................................... 94
8.2 Kết thúc việc thực thi một tuyến đoạn............................................. 95
8.3. Tạm dừng và phục hồi việc xử lý các tuyến đoạn .......................... 96
Sưu tầm bởi: www.daihoc.com.vn
III
9. Các nhóm tuyến đoạn –ThreadGroup ................................................................ 96
9.1. Tạo một nhóm Thread ................................................................... 98
10. Một ví dụ minh họa việc sử dụng tuyến đoạn .................................................. 98
11. Kết luận ......................................................................................................... 100
Chương 5: Lập trình mạng với các lớp InetAddress, URL và URLConnection .......... 102
1. Lớp InetAddress102
1.1. Tạo các đối tượng InetAddress102
1.2. Nhận các trường thông tin của một đối tượng InetAddress ......... 103
1.3. Một số chương trình minh họa .................................................... 104
2. Lớp URL .......................................................................................................... 105
2.1. Tạo các URL ............................................................................... 105
2.2. Phân tích một URL thành các thành phần ................................... 106
2.3. Tìm kiếm dữ liệu từ một URL ...................................................... 108
2.4. Các phương thức tiện ích ............................................................ 109
3. Lớp URLConnection109
3.1. Mở các URLConnection ............................................................. 110
3.2. Đọc dữ liệu từ một server ............................................................ 111
3.3. Phân tích Header ........................................................................ 113
Chương 6: Lập trình Socket cho giao thức TCP ........................................................ 119
1. Mô hình client/server ....................................................................................... 119
2. Các kiến trúc Client/Server ............................................................................. 120
2.1. Client/Server hai tầng (two-tier client/server) ............................... 120
2.2. Client/Server ba tầng ................................................................... 121
2.3. Kiến trúc n-tầng ........................................................................... 122
3. Mô hình truyền tin socket ................................................................................. 122
4. Socket cho Client............................................................................................. 124
4.1. Các constructor ........................................................................... 124
4.2. Nhận các thông tin về Socket ...................................................... 125
4.3. Đóng Socket................................................................................ 126
4.4. Thiết lập các tùy chọn cho Socket127
4.5. Các phương thức của lớp Object127
4.6. Các ngoại lệ Socket .................................................................... 127
4.7. Các lớp SocketAddress ............................................................... 127
5. Lớp ServerSocket ............................................................................................ 128
5.1. Các constructor ........................................................................... 128
5.2. Chấp nhận và ngắt liên kết .......................................................... 129
6. Các bước cài đặt chương trình phía Client bằng Java ..................................... 131
7. Các bước để cài đặt chương trình Server bằng Java ...................................... 134
8. Ứng dụng đa tuyến đoạn trong lập trình Java .................................................. 136
9. Kết luận ........................................................................................................... 141
Chương 7: Lập trình ứng dụng cho giao thức UDP ................................................... 142
1. Tổng quan về giao thức UDP .......................................................................... 142
1.1 Một số thuật ngữ UDP .................................................................. 142
1.2. Hoạt động của giao thức UDP ..................................................... 143
1.3. Các nhược điểm của giao thức UDP ........................................... 143
1.4. Các ưu điểm của UDP ................................................................ 144
1.5. Khi nào thì nên sử dụng UDP ...................................................... 144
2. Lớp DatagramPacket....................................................................................... 145
Sưu tầm b