24
Lương Ánh Hoàng [email protected] Chương 1. Giới thiệu các mô hình lập trình mạng

Network programing chapter 1

Embed Size (px)

Citation preview

Page 1: Network programing   chapter 1

Lương Ánh Hoàng

[email protected]

Chương 1. Giới thiệu các mô hình lập trình mạng

Page 2: Network programing   chapter 1

• 1.1. Tổng quan về lập trình mạng

• 1.2. Giao thức Internet

Chương 1. Giới thiệu các mô hình lập trình mạng

2

Page 3: Network programing   chapter 1

• 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, phần mềm

khai thác hiệu quả tài nguyên mạng máy tính.

1.1. Tổng quan về lập trình mạng

3

Page 4: Network programing   chapter 1

• Ngôn ngữ lập trình mạng• C/C++: Mạnh và phổ biến, được hầu hết các lập trình viên sử dụng để viết các

ứng dụng mạng hiệu năng cao.

• Java: Khá thông dụng, sử dụng nhiều trong các điện thoại di động(J2ME,Android).

• C#: Mạnh và dễ sử dụng, tuy nhiên chạy trên nền .Net Framework và chỉ hỗtrợ họ hệ điều hành Windows.

• Python, Perl, PHP...Ngôn ngữ thông dịch, sử dụng để viết các tiện ích nhỏ, nhanh chóng

• Giáo trình này sẽ chỉ đề cập đến hai ngôn ngữ C/C++ và C#.

1.1. Tổng quan về lập trình mạng

4

Page 5: Network programing   chapter 1

• Một số ví dụ về ứng dụng• Tìm kiếm và tải nhạc từ website cho thiết bị di động

• Giao tiếp với các máy chủ HTTP

• Tải dữ liệu html từ máy chủ HTTP và phân tích

• Tải dữ liệu nhị phân từ máy chủ HTTP

• Đồng bộ file giữa các thiết bị• Cài đặt phần mềm chủ trên PC

• Giao tiếp và truyền dữ liệu giữa các thiết bị

• Xem phim trực tuyến• Giao tiếp với máy chủ RTMP (Flash)

• Gửi lệnh kết nối và nhận dữ liệu hình ảnh/âm thanh

1.1. Tổng quan về lập trình mạng

5

Page 6: Network programing   chapter 1

• Thư viện• Windows Socket API ( WinSock)

• Thư viện liên kết động (WS2_32.DLL) đi kèm trong hệ điều hành Windows của Microsoft.

• Thường sử dụng cùng với C/C++.

• Cho hiệu năng cao nhất.

• System.Net và System.Net.Sockets• Hai namespace trong bộ thư viện .NET của Microsoft

• Dễ sử dụng

• Thường sử dụng với C#

1.1. Tổng quan về lập trình mạng

6

Page 7: Network programing   chapter 1

• Thư viện• MFC Socket

• Nằm trong bộ thư viện MFC của Microsoft

• Đóng gói các hàm của WinSock dưới dạng các lớp hướng đối tượng.

• Dễ sử dụng và hiệu năng 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

1.1. Tổng quan về lập trình mạng

7

Page 8: Network programing   chapter 1

• Công cụ lập trình• Visual Studio (6.0, 2003 .NET,

2005, 2008,2010)• Rất mạnh

• Hỗ trợ cả WinSock, MFC Socket và .NET Socket (Phiên bản 2003.NET trở lên).

• Cài thêm Visual Assist X

• Dev C++• Miễn phí

• Chỉ hỗ trợ WinSock

1.1. Tổng quan về lập trình mạng

8

Page 9: Network programing   chapter 1

• Công cụ gỡ rối• TCPView: Hiển thị các kết nối hiện tại của máy tính.

• Resource Monitor: ~ TCPView.

• Wireshark, Microsoft Network Monitor

• Netcat (Netcat Win32)

1.1. Tổng quan về lập trình mạng

9

Page 10: Network programing   chapter 1

• Tài liệu tra cứu• Microsoft Developer Network

– MSDN• Cực kỳ chi tiết và chuyên nghiệp

• Công cụ không thể thiếu

• Google/BING

1.1. Tổng quan về lập trình mạng

10

Page 11: Network programing   chapter 1

• Bài tập môn học (yêu cầu chung)• Chia thành các nhóm, mỗi nhóm không quá 03 người,

phân công công việc rõ ràng. Tổ chức theo các module độc lập

• Mỗi nhóm thực hiện 01 đề tài.• Mỗi đề tài không quá 02 nhóm thực hiện.• Thang điểm tối đa 100. • Các chương trình có dấu hiệu giống/sao chép của

nhau sẽ được 0 điểm.• Có thể sử dụng OpenSource nếu đề bài có chỉ rõ.• Mỗi nhóm có 45 phút trình bày phương án tiếp cận và các

vấn đề sẽ giải quyết

1.1. Tổng quan về lập trình mạng

11

Page 12: Network programing   chapter 1

• Bài tập môn học (1 – FTP Client)• Viết chương trình FTP Client thực hiện được ít nhất các

chức năng sau:

• Đăng nhập vào một máy chủ FTP.

• Hiện danh sách các tệp tin trên máy chủ.

• Tải một tệp tin được chọn, có thể tải bằng nhiều kết nối song song.

• Upload được tệp tin lên thư mục được chọn.

• Đổi tên, xóa một tệp tin, thư mục được chọn

• Tạo một thư mục mới

• Ngôn ngữ C/C++/C#.

• Tự lập trình mức SOCKET

• Tham khảo: FileZilla

1.1. Tổng quan về lập trình mạng

12

Page 13: Network programing   chapter 1

• Bài tập môn học (2 – HTTP(S) Client)• Viết chương trình tải tệp tin theo giao thức HTTP(S)

thực hiện được ít nhất các chức năng sau

• Tải tệp tin ở một địa chỉ xác định.

• Cho phép nhập số luồng song song cần tải (để cạnh tranh với IDM ???).

• Cho phép nhập các thông số về phạm vi của tệp tin muốn tải (offset, length)

• Xử lý được việc tải file tự động từ các website chia sẻ thông dụng:

• Ngôn ngữ C/C++/C# - Sử dụng TCP Socket

1.1. Tổng quan về lập trình mạng

13

Page 14: Network programing   chapter 1

• Bài tập môn học (3 – HTTP Server)• Viết chương trình HTTP Server (HTTP/1.1) thực hiện

được ít nhất các công việc sau.

• Xử lý được các lệnh: GET POST.

• Đáp ứng được tối đa 6400 kết nối.

• Xử lý được xác thực client bằng password.

• Thống kê và ghi nhật ký.

• Ngôn ngữ: C/C++/C# - Sử dụng TCP Socket

1.1. Tổng quan về lập trình mạng

14

Page 15: Network programing   chapter 1

• Bài tập môn học (4 – Voice Chat)• Ưu tiên thiết lập kết nối trực tiếp giữa các client

• Trong trường hợp không thể thiết lập kết nối trực tiếp thì có thể trung gian qua server

• Giao thức tự thiết kế, codec tự chọn (mp3,wma,aac…). Không truyền âm thanh chưa nén (wav,pcm).

• Mã hóa kênh truyền theo giải thuật tùy chọn.

• Ngôn ngữ C/C++/C#.

• Cho phép sử dụng OpenSource lame (ffmpeg) để nén và giải nén MP3.

1.1. Tổng quan về lập trình mạng

15

Page 16: Network programing   chapter 1

• Bài tập môn học (5 – Thông tin rạp phim)• Tự động hiển thị thông tin về: phim đang chiếu rạp,

show truyền hình đang chiếu tại thời điểm hiện tại.

• Các thông tin cần có về phim: Tên, Poster (Ảnh), Thể loại, đánh giá, tóm tắt, trailer….(nguồn từ imdb.com).

• Các thông tin cần có về show truyền hình: tên show, giờ phát.

• Đầu vào: 24h.com.vn, vtcv.vn, sctv.vn, platinumcineplex, egastar, national cinema centre….

• Cho phép đặt báo thức đến thời điểm một phim/show truyền hình nào đó.

• Ngôn ngữ: C/C++/C# sử dụng TCP Socket

1.1. Tổng quan về lập trình mạng

16

Page 17: Network programing   chapter 1

• Bài tập môn học (6 – RTMP GUI)• Tự động lấy cơ sở dữ liệu rtmp links.

• Phân tích / tách dữ liệu để tạo link rtmp đầy đủ.

• Kết nối tới rtmp server để download dữ liệu.

• Ghi nhật ký để tạo danh sách các server đang hoạt động tốt

• Cho phép dùng mã nguồn mở: RTMPDUMP.

• Ngôn ngữ: C/C++/C# (nếu thích)

• Do RTMP quá phức tạp, nên nhóm chỉ cần tìm hiểu cơ chếkết nối, nhóm được khuyến khích dùng nguồn mở

1.1. Tổng quan về lập trình mạng

17

Page 18: Network programing   chapter 1

• Bài tập môn học (7 – Youtube Live Player)• Kết nối tới Youtube live.

• Lấy danh sách kênh đang truyền hình

• Phân tích dữ liệu html để lấy liên kết http của kênh.

• Http pseudo streaming.

• Ngôn ngữ: C# lập trình trên Windows Phone

• Được sự trợ giúp để hiển thị dữ liệu video

1.1. Tổng quan về lập trình mạng

18

Page 19: Network programing   chapter 1

• Bài tập môn học (8 – Youtube Downloader)• Kết nối tới Youtube.

• Thực hiện các search query (sử dụng Google Data API)

• Phân tích dữ liệu html để lấy liên kết http của một video.

• Tải file FLV về máy sau đó tách âm thanh (mp3 hoặc aac).

• Ngôn ngữ: C/C++/C#

• Tự cài đặt phần giao tiếp mạng và tải dữ liệu

• Phần tách âm thanh có thể dùng nguồn mở

1.1. Tổng quan về lập trình mạng

19

Page 20: Network programing   chapter 1

• Bài tập môn học (9 – 4Share Downloader)• Tìm hiểu giao thức và API của 4share.com.

• Viết chương trình kết nối và đăng nhập 4share

• Tìm kiếm và hiển thị danh sách bài hát (mp3) trên 4share

• Nghe thử và tải mp3 từ 4share.

• Ngôn ngữ: C# trên Windows Phone

1.1. Tổng quan về lập trình mạng

20

Page 21: Network programing   chapter 1

• Bài tập môn học (10 – Simple Email Client)• Tìm hiểu giao thức POP3 (RFC 1939)

• Viết chương trình kết nối và đăng nhập vào một Pop3 server

• Hiển thị các email và trạng thái tương ứng (đã đọc, chưađọc…)

• Lấy dữ liệu email và hiển thị.

• Tải và lưu trữ các file đính kèm nếu có

• Ngôn ngữ: C/C++/c#

1.1. Tổng quan về lập trình mạng

21

Page 22: Network programing   chapter 1

• Bài tập môn học (10)• Kết nối tới Youtube.

• Thực hiện các search query (sử dụng Google Data API)

• Phân tích dữ liệu html để lấy liên kết http của một video.

• Tải file FLV về máy sau đó tách âm thanh (mp3 hoặc aac).

• Ngôn ngữ: C/C++/C#

• Tự cài đặt phần giao tiếp mạng và tải dữ liệu

• Phần tách âm thanh có thể dùng nguồn mở

• Độ khó: 3

1.1. Tổng quan về lập trình mạng

22

Page 23: Network programing   chapter 1

• Bài tập môn học (11)• Camera lắp tại BUS

• 1 Máy tính nhúng có phối ghép 3G (2 SIM) (LINUX)

• Viết code (LINUX)• Lấy dữ liệu ảnh từ camera (http, authorization)

• Jpeg (ảnh rời)

• Yêu cầu: nén thành video stream (FFMPEG)

• Xây dựng một HTTP pseudo-streaming server

1.1. Tổng quan về lập trình mạng

23

Page 24: Network programing   chapter 1

• Giao thức Internet (Internet Protocol)• Giao thức mạng thông dụng nhất trên thế giới.

• Thành công của Internet là nhờ IPv4.

• Được hỗ trợ trên tất cả các hệ điều hành.

• Là công cụ sử dụng để lập trình ứng dụng mạng

1.2. Giao thức Internet

24