Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

CHƯƠNG 2: Lập Trình Mạng Với .

Net
2.1 Tổng quan về lập trình mạng

Lập trình mạng( nguồn: internet)

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

LTM Lập trình mạng

KTM Kiến thức mạng truyền thông (mạng máy tính, PSTN,…)

Mô hình lập trình mạng (mạng LAN, Mạng diện rộng


MH WAN, Mạng đô thị MAN, Mạng cá nhân PAN,…)

Ngôn ngữ lập trình mạng (Java .NET; C/C++; Delphi;


NN Javascript.,…)

b) Ngôn ngữ lập trình mạng


 Hiện nay trong lĩnh vực lập trình, có rất nhiều ngôn ngữ lập trình mạng
khác nhau. Lập trình viên sẽ dựa theo khả năng và mục đích của mình để
lựa chọn ngôn ngữ thích hợp.
 Trước đây, Java và NET đã từng là 2 ngôn ngữ lập trình được nhiều lập
trình viên sử dụng. Tuy nhiên hiện tại đã xuất hiện nhiều ngôn ngữ lập
trình mới với những bước tiến bộ vượt trội. Đặc biệt là chúng giúp người
lập trình xây dựng ứng dụng mạnh một cách nhanh chóng và dễ dàng.
 Một trong những ngôn ngữ lập trình tiêu biểu mới xuất hiện trong giai
đoạn hiện nay chính là Javascript. Ngôn ngữ này đã góp phần tạo nên một
làn sóng xu hướng mới cholập trình Full Stack. Ngôn ngữ Javascript đã
và đang dần thay thế cho công nghệ Front End hay Back End truyền
thống.
 Ngoài ra sẽ có một số ngôn ngữ lập trình khác được sử dụng phổ biến
như sau :

• 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

a) Socket hướng kết nối ( TCP socket)


- Nó tạo ra một đường ống thông thoáng giữa server và client, nơi
mà dữ liệu có thể trao đổi mượt mà. Điểm mạnh của Socket
hướng kết nối nằm ở khả năng duy trì một kết nối liên tục, như
một cuộc trò chuyện không ngừng giữa hai bên.
- 1 trong 2 tiến trình phải đợi tiến trình kia yêu cầu kết nối
- Sử dụng để trao đổi thông điệp theo mô hình client-server
- Mô hình client-server: server luôn lắng nghe và chấp nhận kết
nối
- Mỗi thông điệp gửi đi đều có xác nhận trở về
- Đảm bảo mọi dữ liệu được truyền đi đều đến đích đúng thứ tự và
đúng địa điểm. Đảm bảo cho sự an toàn và chính xác của thông
tin.
b) Socket hướng không kết nối ( UDP socket)
- Khả năng hoạt động mà không cần thiết lập kết nối trước giữa
hai máy, hai tiến trình liên lạc với nhau không kết nối trực tiếp.
- Thông điệp gửi đi phải kèm theo địa chỉ của người nhận
- Thông điệp có thể bị gửi nhiều lần
- Máy gửi không chắc chắn thông điệp có đến được máy
nhận hay không
- Các gói tin gửi đi không theo tuần tự, có thể được gửi
trước nhưng đến sau

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

You might also like