Professional Documents
Culture Documents
Chương 2 Lapptrinhmang
Chương 2 Lapptrinhmang
Net
2.1 Tổng quan về lập trình mạng
a) Khái niệm:
Lập trình mạng là các kỹ thuật lập trình nhằm xây dựng ứng dụng
thông qua mạng máy tính, phần mềm khai thác hiệu quả tài nguyên mạng.
Lập trình viên sẽ dùng các phần mềm dể phát triển thành ứng dụng trong
hệ thống của doanh nghiệp
VD: Các phần mềm có thể là phần mềm kế toán, nhân sự hay ứng dụng
trò chơi, giải trí….
Có thể hiểu sâu hơn về định nghĩa lập trình mạng bằng công thức sau :
LTM = KTM + MH + NN
Trong đó :
Ký hiệu trong
công thức Diễn giải
KTM Kiến thức mạng truyền thông (mạng máy tính, PSTN,…)
• C/C++: Mạnh và phổ biến để viết các ứng dụng mạng hiệu
năng cao.
• Java: Khá thông dụng phổ biến với các thư viện mạng có sẵn giúp
pahst triển phần mềm mạng , sử dụng nhiều trong các điện thoại
di động (J2ME).
• C#: Cung cấp các công cụ mạnh mẽ cho lập trình mạng bao gồm các
lớp và thư viện để xử lí các giao thức mạng và tạo ra các ứng dụng
mạng, tuy nhiên chạy trên nền .Net Framework và chỉ hỗ trợ họ hệ điều
hành Windows.
• Python – ngôn ngữ lập trình với mã nguồn mở
• Perl – Ngon ngữ lập trình đa năng
• TCL – Ngôn ngữ lập trình động mục đích chung, ngôn ngữ lệnh công
cụ
c) Thư viện
Windows Socket API ( WinSock)
- Bộ thư viện liên kết động của Microsoft.
- Cung cấp các API dùng để xây dựng ứng dụng mạng hiệu năng
cao.
- Phiên bản hiện tại là WinSock 2.0
- Các ứng dụng sẽ giao tiếp với thư viện liên kết động ở tầng trên
cùng: WS2_32.DLL.
- Thường sử dụng với C/C++
MFC Socket
- MFC : Microsoft Foundation Clases
- Nằm trong bộ thư viện MFC của Microsoft
- Bộ thư viện hướng đối tượng C++ lập trình ứng dụng trên
Window.
- Cung cấp hai lớp hỗ trợ lập trình mạng:
CasyncSocket: Đóng gói lại thư viện WinSock dưới dạng
hướng đối tượng. Hoạt động ở chế độ bất đồng bộ.
Csocket: Kế thừa từ CasyncSocket và cung cấp giao diện ở
mức cao hơn nữa. Hoạt động ở chế độ đồng bộ.
- Hai lớp này thì không thread-safe: đối tượng tạo ra ở luồng nào
thì chỉ có thể được sử dụng ở luồng đó.
- Dễ sử dụng và hiệu quả cao
- Các thư viện của các ngôn ngữ khác: Java, PHP, Python...
- Thư viện sử dụng trong giáo trình: WinSock, MFC Socket,
System.Net và System.Net.Sockets.
System.Net và System.Net.Sockets
- .NET Framework là bộ thư viện chạy trên đa kiến trúc của
Microsoft.
- Hai namespace hỗ trợ lập trình mạng: System.Net và
System.Net.Sockets.
- Dễ sử dụng và thường dùng với C#
- Một vài lớp chính :
IPAddress: Lưu trữ và quản lí địa chỉ IP.
IPEndPoint: Lưu trữ thông tin về một địa chỉ socket,
tương tự như SOCKADDR_IN. Bao gồm IPAddress và
cổng.
DNS: Hỗ trợ các thao tác phân giải miền.
Socket: Xử lí các thao tác trên socket.
2.2 Socket
- Socket là một giao diện lập trình ứng dụng mạng (API) như trình
duyệt web, ứng dụng chat và truyền file.
- Thông qua giao diện socket để lập trình điều khiển
việc truyền thông giữa 2 máy tính theo các giao thức
mức thấp TCP, UDP, IP…
- Socket là sự trừu tượng hoá mức độ cao như một thành phần cho
phép thực hiện việc gửi – nhận dữ liệu hai chiều giữa hai máy tính.
- Các loại socket:
Socket hướng kết nối(TCP socket)
Socket hướng không kết nối(UDP socket)
Raw socket
- Để xây dựng ứng dụng với socket, cần viết chương trình ở cae 2
phía client và server ( trong mô hình client-server) sử dụng các loại
socket trên
- Việc phân loại có thể dựa trên giao thức
c) Raw socket
- Cầu nối của mạng, nơi mà mọi gói tin dữ liệu, mỗi đợt truyền tải
đều được quản lý và kiểm soát một cách chặt chẽ.
- Cho phép người sử dụng tương tác trực tiếp với các giao thức
như TCP và UDP mà không phải qua những lớp trừu tượng cao
cấp.
- Hỗ trợ trừu tượng hóa socket, cho phép sự tương tác với các
thuật ngữ và tính năng cấp thấp của socket.
2.3 Stream