강의

멘토링

로드맵

Inflearn brand logo image
BEST
Security & Network

/

System

Từ giới thiệu về lập trình socket Windows đến các máy chủ hiệu suất cao!

Trong bài giảng này, bạn sẽ học các kỹ thuật thiết kế giao thức cấp ứng dụng và phát triển máy chủ hiệu suất cao dựa trên IOCP!

(5.0) 44 đánh giá

1,418 học viên

  • nullnull8537
소켓프로그래밍
소켓
윈도우환경
Socket.io
iocp
tcpip
udp

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Kỹ thuật lập trình socket TCP dựa trên Windows

  • Kỹ thuật sản xuất máy chủ đa luồng

  • Kỹ thuật sản xuất máy chủ hiệu suất cao dựa trên IOCP

  • Kỹ thuật thiết kế giao thức cấp ứng dụng

Bạn có muốn trở thành một lập trình viên cấp cao không?
Hãy thử thách bản thân với lập trình Windows Socket!

Xây dựng một máy chủ C/C++ hiệu suất cao,
Kết thúc luôn là IOCP!

Tìm hiểu cách phát triển chương trình socket TCP/IP trong môi trường Windows . Khóa học này bao gồm mọi thứ, từ lý thuyết cơ bản về xử lý socket đến xử lý IOCP (Cổng Hoàn thành I/O) và các kỹ thuật thiết kế giao thức cấp ứng dụng.

Máy chủ hiệu suất cao là một chủ đề bắt buộc phải biết đối với các nhà phát triển C/C++. Và cuối cùng, luôn có IOCP. Thực tế, IOCP không phải là một chủ đề khó! Bất kỳ ai có hiểu biết cơ bản về hệ điều hành (đặc biệt là bộ nhớ ảo) và kỹ năng xử lý luồng đều có thể học được. Nói cách khác, việc nắm vững lý thuyết cơ bản sẽ giúp bạn dễ dàng nắm bắt.

Hầu hết sách và bài giảng về lập trình socket đều tập trung vào dịch vụ trò chuyện. Quá trình này thường dẫn đến một số quan niệm sai lầm . Thật không may, những vấn đề này không chỉ cản trở việc hiểu socket mà còn cản trở việc thiết kế giao thức đúng đắn.


Đối với lập trình socket
Chúng tôi sẽ thông báo cho bạn về giải pháp cốt lõi.

1️⃣ Cơ bản về lập trình TCP Socket

2️⃣ Kỹ thuật thiết kế giao thức ứng dụng

3️⃣ Phương pháp phát triển máy chủ có tính đến các tình huống lỗi

4️⃣ Cách phát triển máy chủ dựa trên IOCP

Khóa học này giải quyết những vấn đề này, bao gồm cả những vấn đề gặp phải trong giai đoạn lập trình socket nhập môn, bằng cách cung cấp các giải pháp và lộ trình học tập. Trên hết, bạn sẽ sử dụng Wireshark để trực tiếp kiểm tra các gói tin và kết nối kiến thức về các lý thuyết khác nhau với các tình huống thực tế. Hơn nữa, bạn sẽ học cách ứng phó với các lỗi, đặt nền tảng cho việc phát triển các máy chủ hiệu suất cao.


Có lẽ đây là mối quan tâm của bạn?

Khóa học này dành cho các nhà phát triển C/C++ cần phát triển máy chủ có hiệu suất cao!

Trường hợp 1 Tôi muốn lập trình socket, nhưng tôi bị kẹt ở Lớp OSI 7.

Bạn không nhất thiết phải học mô hình OSI 7 lớp trước khi học lập trình socket. Mặc dù việc biết về mô hình này chắc chắn hữu ích, nhưng không có nghĩa là bắt buộc. Tuy nhiên, chúng tôi khuyến nghị bạn nên bắt đầu sau khi đã học ít nhất một chút về giao thức TCP .

Trường hợp 2: Tôi muốn học lập trình socket, nhưng nó quá khó. Tôi có thực sự cần học lập trình hệ thống không?

Bất kỳ ai đã quen thuộc với lập trình hệ thống đều có thể dễ dàng nắm vững lập trình socket chỉ bằng cách tập trung vào TCP. Điều này nhấn mạnh tầm quan trọng của việc hiểu biết về lập trình hệ thống. Tuy nhiên, bạn không cần phải hiểu hết tất cả những điều phức tạp; chỉ cần hiểu về đa luồng và phương pháp đồng bộ hóa là đủ để học.

Trường hợp 3 Tôi biết rằng máy chủ IOCP có hiệu suất cao, nhưng quá khó để nghiên cứu.

Nhiều người thấy IOCP khó. Lý do là vì luồng dữ liệu bên trong không thể nhìn thấy được và họ thiếu kinh nghiệm với các kỹ thuật nhập/xuất tệp bất đồng bộ sử dụng cấu trúc callback. Vì socket về cơ bản là tệp , việc hiểu rõ các kỹ thuật nhập/xuất bất đồng bộ sẽ giúp việc hiểu IOCP trở nên dễ dàng. Chương trình giảng dạy của khóa học này được thiết kế để giải quyết những thách thức này.

Trường hợp 4 Tôi đang sử dụng kiến trúc Máy khách/Máy chủ, nhưng tôi không chắc liệu giao thức được áp dụng có phù hợp hay không và liệu có đúng khi viết mã như thế này không.

Nhiều người cảm thấy e ngại khi nghe đến thuật ngữ "thiết kế giao thức". Nhưng một khi đã hiểu, nó không hề phức tạp. Điều này đặc biệt đúng khi bạn trải nghiệm cấu trúc gửi/nhận ở cấp độ mã .

Trường hợp 5: Tôi muốn trở thành nhà phát triển máy chủ trò chơi. Tôi nên học gì?

Máy chủ trò chơi yêu cầu hiệu suất cao và tính khả dụng cao. Hiểu biết sâu sắc về giao thức TCP/IP , kỹ năng lập trình hệ thốngkhả năng thiết kế giao thức đặc biệt quan trọng. Kiến thức về các kỹ thuật nhập/xuất tốc độ cao như IOCP cũng rất cần thiết.


Nội dung học tập
Hãy xem thử nhé.

  • Bạn có thể viết chương trình socket TCP/IP (echo, chat)
  • Bạn có thể tạo máy chủ C/C++ hiệu suất cao dựa trên ICOP.
  • Học các kỹ thuật thiết kế giao thức cấp ứng dụng và viết mã liên quan.
  • Tôi có thể phân tích và ứng phó với những lỗi tiềm ẩn có thể xảy ra khi vận hành các ứng dụng tôi đã viết.
  1. Cơ bản về lập trình TCP Socket
  2. Máy chủ phản hồi TCP (đa luồng)
  3. Máy chủ trò chuyện TCP (đa luồng, ghép kênh I/O, lựa chọn sự kiện, IOCP)
  1. Kỹ thuật truyền/nhận tập tin và phản hồi lỗi
  2. Thiết kế giao thức cấp ứng dụng và kỹ thuật viết mã
  3. Nguyên lý đầu vào/đầu ra không đồng bộ và IOCP
  4. Kỹ thuật lập trình socket UDP

Kiến thức của người chơi và các khóa học được đề xuất

Để học khóa học này, bạn cần hiểu nội dung được đề cập trong chương trình học bên dưới.

💾 Vui lòng kiểm tra trước khi tham gia lớp học.

  • Bạn cần Windows 10 trở lên để thực hiện hướng dẫn này. (Linux và macOS không được hỗ trợ.)
  • Hướng dẫn này sử dụng Visual Studio 2022 Community Edition và yêu cầu máy tính có khả năng chạy Visual Studio (bao gồm MFC và Windows SDK).
  • Chúng tôi cung cấp tệp PDF các biểu đồ được sử dụng trong bài giảng và ví dụ cho mỗi lớp.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Bất cứ ai muốn học lập trình socket TCP/IP

  • Những người muốn biết kỹ thuật thiết kế giao thức kiến ​​trúc Client/Server

  • Bất cứ ai muốn hiểu đầu vào/đầu ra tệp không đồng bộ

  • Bất cứ ai muốn biết tại sao đầu vào/đầu ra không đồng bộ có thể đạt được hiệu suất cao

  • Bất kỳ ai muốn phát triển máy chủ hiệu suất cao dựa trên IOCP

  • Những người mong muốn trở thành nhà phát triển máy chủ trò chơi

Cần biết trước khi bắt đầu?

  • Nội dung liên quan đến bài giảng “Suy ngẫm về lập trình C”

  • Nội dung liên quan đến bài giảng “Lý thuyết lõi mạng - Cơ bản”

Xin chào
Đây là

37,006

Học viên

2,151

Đánh giá

1,098

Trả lời

4.9

Xếp hạng

24

Các khóa học

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^  

Chương trình giảng dạy

Tất cả

47 bài giảng ∙ (9giờ 37phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

44 đánh giá

5.0

44 đánh giá

  • ichroh님의 프로필 이미지
    ichroh

    Đánh giá 5

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    • nullnull8537
      Giảng viên

      Cảm ơn bạn vì đánh giá tốt. :)

  • snorobowling7201님의 프로필 이미지
    snorobowling7201

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    83% đã tham gia

    Tiếp nối sau lập trình hệ thống cơ bản trước đó, tôi đã bước vào lập trình socket, và đây là bài giảng giúp làm rõ những khái niệm trừu tượng như "socket = File / khi chuyển sang TCP thì là TCP Socket" mà trước đây tôi không hiểu được. Ngoài ra, quá trình hoạt động của 3-way Handshake và việc sử dụng các hàm listen, bind, accept mà trước đây chỉ thấy trong lý thuyết nên không hiểu gì, giờ khi thực hành thì thấy việc coding thực sự diễn ra theo đúng thứ tự như trong sơ đồ. Đây cũng có vẻ là một bài giảng ý nghĩa giúp tôi có thể trở thành bạn (?) với sơ đồ lập trình socket. ===== Tuần này sẽ ôn tập toàn bộ bài giảng lập trình socket / học lại danh bạ danh sách liên kết sau đó sẽ bước vào lập trình mạng. Vì đã học OS, TCP/IP, lập trình hệ thống trước đó nên có nhiều phần trùng lặp, do đó việc hiểu không quá khó khăn và tiến độ nhanh hơn dự kiến nên tôi cũng thắc mắc "Có đúng không nhỉ?". Hehe..

    • nullnull8537
      Giảng viên

      Đây chính xác là kết quả mà tôi mong muốn bạn đạt được. Nếu hiểu về giao thức TCP/IP và học lập trình hệ thống một cách đúng đắn thì tôi nghĩ lập trình socket sẽ tự động hoàn thành ở một khía cạnh nào đó. Tôi muốn gửi phản hồi rằng bạn đang đi đúng hướng rất tích cực. Và khi bạn xem lập trình mạng, bạn sẽ thấy nhưng bạn sẽ có thể tự hiểu tại sao những giải thích về TCP/IP có thể hơi trừu tượng lại như vậy. Cảm ơn bạn vì đánh giá tốt. 😊

  • aceoftop1975님의 프로필 이미지
    aceoftop1975

    Đánh giá 95

    Đánh giá trung bình 5.0

    Đã chỉnh sửa

    5

    100% đã tham gia

    (25/07/27/일 19:50) Tôi đã nghe hết khóa học lộ trình mạng rồi. ^^; Mỗi bài giảng đều học được rất nhiều điều. Trong bài giảng này, câu nói "hãy luôn nghĩ đến trạng thái lỗi bất thường (ngắt kết nối dây LAN)..." thực sự chạm đến tôi. Cảm ơn anh đã tạo ra khóa học tuyệt vời.

    • nullnull8537
      Giảng viên

      Bây giờ có vẻ như bạn có thể thay tôi giảng dạy rồi. Bạn đã tiếp thu hầu hết các bài giảng của tôi rồi đấy. Thật sự rất tuyệt vời. :)

  • tennisman7072858님의 프로필 이미지
    tennisman7072858

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    • nullnull8537
      Giảng viên

      Cảm ơn bạn đã đánh giá tốt. :)

  • abba0103272615님의 프로필 이미지
    abba0103272615

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    62% đã tham gia

    Cảm ơn anh/chị đã luôn đăng tải những bài giảng hay.

    • nullnull8537
      Giảng viên

      Đó là nhờ anh/chị đã chiếu cố. Tôi mới là người phải cảm ơn nhiều hơn. :)

2.301.854 ₫

Khóa học khác của nullnull8537

Hãy khám phá các khóa học khác của giảng viên!