강의

멘토링

로드맵

Inflearn brand logo image
BEST
Security & Network

/

System

From Windows Sockets Programming Beginner to High-Performance Servers!

In this lecture, you will learn application-level protocol design techniques and how to develop a high-performance server based on IOCP!

(5.0) 44 reviews

1,418 learners

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

Reviews from Early Learners

What you will learn!

  • Windows-based TCP socket programming techniques

  • Techniques for building multi-threaded servers

  • IOCP-based high-performance server production technique

  • Application-level protocol design techniques

Want to become a high-level programmer?
Challenge yourself with Windows Socket programming!

Building a high-performance C/C++ server,
The end is always IOCP!

Learn how to develop TCP/IP socket programs in a Windows environment . This course covers everything from introductory theory on handling sockets to handling IOCPs (I/O Completion Ports) and application-level protocol design techniques.

High-performance servers are a must-know topic for C/C++ developers. And at the end of the spectrum, there's always IOCP. In fact, IOCP isn't a difficult topic! Anyone with a basic understanding of operating systems (especially virtual memory) and thread handling skills can learn it. In other words, a solid understanding of the underlying theory will make it easy to grasp.

Most books and lectures on socket programming focus on chat services. This process often leads to the development of some misconceptions . Unfortunately, these issues not only hinder understanding sockets but also hinder proper protocol design.


For socket programming
We will inform you of the core solution.

1️⃣ TCP Socket Programming Basics

2️⃣ Application Protocol Design Techniques

3️⃣ Server development methods that take failure situations into account

4️⃣ How to develop an IOCP-based server

This course addresses these issues, including those encountered in the introductory socket programming phase, by providing solutions and learning paths. Above all, you'll use Wireshark to directly inspect packets and connect your understanding of various theories with code-level situations. Furthermore, you'll learn how to respond to failures, laying the foundation for developing high-performance servers.


Is this perhaps your concern?

This course is for C/C++ developers who need to develop servers that require high performance!

Case 1 I want to do socket programming, but I'm stuck at the OSI 7 Layer.

You don't necessarily need to study the OSI 7-Layer model before studying socket programming. While it's certainly helpful to know, it's hardly mandatory. However, it's recommended that you begin after at least some study of the TCP protocol .

Case 2: I want to learn socket programming, but it's too difficult. Do I really need to learn system programming?

Anyone already familiar with systems programming can easily master socket programming by simply focusing on TCP. This underscores the importance of understanding systems programming. However, you don't need to understand all the complexities; simply understanding multithreading and synchronization methods will suffice for learning.

Case 3 I know that the IOCP server is high-performance, but it is too difficult to study.

Many people find IOCP difficult. This is because the internal flow is not visible and they lack experience with asynchronous file input/output techniques utilizing callback structures. Since sockets are essentially files , a thorough understanding of asynchronous input/output techniques will make understanding IOCP easy. This course's curriculum is designed to address these challenges.

Case 4 I am using a Client/Server architecture, but I am not sure if the applied protocol is appropriate and if it is correct to write the code like this.

Many people are intimidated by the term "protocol design." But once you understand it, it's not that complicated. This is especially true when you experience the send/receive structure at the code level .

Case 5: I want to become a game server developer. What should I study?

Game servers require high performance and high availability. A deep understanding of TCP/IP protocols , system programming skills , and protocol design capabilities are particularly crucial. Knowledge of high-speed input/output techniques like IOCP is also essential.


Learning content
Check it out.

  • You can write TCP/IP socket programs (echo, chat)
  • You can create a high-performance C/C++ server based on ICOP.
  • Learn techniques for designing application-level protocols and writing related code.
  • I can analyze and respond to potential failures that may occur while operating the applications I wrote.
  1. TCP Socket Programming Fundamentals
  2. TCP echo server (multithreaded)
  3. TCP chat server (multithreading, I/O multiplexing, event selection, IOCP)
  1. File transmission/reception techniques and failure response
  2. Application-level protocol design and code writing techniques
  3. Asynchronous Input/Output Principles and IOCP
  4. UDP socket programming techniques

Player Knowledge and Recommended Courses

To study this course, you need to understand the content covered in the course curriculum below.

💾 Please check before taking the class.

  • You will need Windows 10 or later for this tutorial. (Linux and macOS are not supported.)
  • This tutorial uses Visual Studio 2022 Community Edition , and requires a PC capable of running Visual Studio (including MFC and Windows SDK).
  • We provide PDF files of the charts used in the lecture and examples for each class.

Recommended for
these people

Who is this course right for?

  • Anyone who wants to learn TCP/IP socket programming

  • Anyone who wants to know about Client/Server architecture protocol design techniques

  • For those who want to understand asynchronous file input/output

  • For those who want to know why asynchronous input/output can achieve high performance

  • Anyone who wants to develop a high-performance server based on IOCP

  • Anyone who wants to be a game server developer

Need to know before starting?

  • Contents corresponding to the lecture “C Programming: A Deep Review”

  • Contents corresponding to the lecture “Network Core Theory - Basics that you can memorize and finish”

Hello
This is

37,006

Learners

2,150

Reviews

1,098

Answers

4.9

Rating

24

Courses

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

Curriculum

All

47 lectures ∙ (9hr 37min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

44 reviews

5.0

44 reviews

  • ichroh님의 프로필 이미지
    ichroh

    Reviews 5

    Average Rating 5.0

    5

    32% enrolled

    • nullnull8537
      Instructor

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

  • snorobowling7201님의 프로필 이미지
    snorobowling7201

    Reviews 6

    Average Rating 5.0

    5

    83% enrolled

    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
      Instructor

      Đâ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

    Reviews 95

    Average Rating 5.0

    Edited

    5

    100% enrolled

    (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
      Instructor

      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

    Reviews 2

    Average Rating 5.0

    5

    32% enrolled

    • nullnull8537
      Instructor

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

  • abba0103272615님의 프로필 이미지
    abba0103272615

    Reviews 2

    Average Rating 5.0

    5

    62% enrolled

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

    • nullnull8537
      Instructor

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

$84.70

nullnull8537's other courses

Check out other courses by the instructor!