강의

멘토링

로드맵

BEST
보안 · 네트워크

/

시스템 · 운영체제

Windows 소켓 프로그래밍 입문에서 고성능 서버까지!

이 강의를 통해 응용 프로그램 수준 프로토콜 설계 기법과 IOCP기반 고성능 서버 개발 방법을 배울 수 있습니다!

(5.0) 수강평 45개

수강생 1,430명

소켓프로그래밍
소켓
윈도우환경
Socket.ioiocptcpipudp

먼저 경험한 수강생들의 후기

이런 걸 배울 수 있어요

  • Windows기반 TCP 소켓 프로그래밍 기법

  • 멀티스레드 서버 제작 기법

  • IOCP 기반 고성능 서버 제작 기법

  • 응용 프로그램 수준 프로토콜 설계 기법

수준 높은 프로그래머로 도약하고 싶다면? 
윈도우 소켓 프로그래밍에 도전하세요!

C/C++ 고성능 서버 구축,
끝은 항상 IOCP입니다! 

Windows 환경에서 TCP/IP 소켓 프로그램을 개발하는 방법을 배웁니다. 최초 소켓을 다루는 입문이론을 비롯해 IOCP(I/O Completion Port)를 다루는 방법과 응용 프로그램 수준 프로토콜 설계 기법까지 다룹니다. 

C/C++ 계열 개발자들이 꼭 알아야 할 지식으로 고성능 서버는 빠지지 않는 주제입니다. 그리고 그 끝에는 늘 IOCP가 있습니다. 사실 IOCP는 어려운 주제가 아닙니다! 운영체제에 대한 어느 정도의 이해(특히 가상 메모리)가 있고 스레드를 다룰 줄 아는 분이라면 누구나 배울 수 있습니다. 다시 말해 기반 이론에 대한 이해가 탄탄하다면 쉽게 이해할 수 있습니다.

그리고 소켓 프로그래밍을 다루는 대부분의 서적과 강의들이 채팅 서비스를 다룹니다. 그 과정에서 몇몇 잘못된 관념이 생겨납니다. 안타깝게도 그 문제는 소켓을 이해하는 데 방해 요소로 작용할 뿐 아니라 프로토콜 설계를 바르게 할 수 없는 원인이 되기도 합니다. 


소켓 프로그래밍을 위한
핵심 솔루션을 알려드립니다.

1️⃣ TCP 소켓 프로그래밍 기초 이론

2️⃣ 응용 프로그램 프로토콜 설계 기법

3️⃣ 장애 상황을 고려한 서버 개발 방법

4️⃣ IOCP 기반 서버 개발 방법

이 강의는 이와 같은 문제들을 해결하기 위해 소켓 프로그래밍 입문 단계에서 겪을 수 있는 문제들을 포함해 바른 해결 방안과 학습 방향을 제시합니다. 무엇보다 Wireshark를 이용해 패킷을 직접 확인하고 자신이 알고 있는 각종 이론과 코드 수준 상황을 연계해 이해할 수 있습니다. 나아가 장애 문제에 대응할 수 있는 방법까지 학습함으로써 고성능 서버를 개발할 수 있는 기반을 확보할 수 있습니다.


혹시 여러분의 고민은 아닌가요?

고성능이 요구되는 서버를 개발해야 하는 C/C++ 계열 개발자를 위한 강의입니다!

Case 1 소켓 프로그래밍을 하고 싶은데 OSI 7 Layer부터 막혔어요.

소켓 프로그래밍을 공부하기 전에 반드시 OSI 7 Layer를 공부할 필요는 없습니다. 물론 알고 있다면 도움이 되는 것이 사실이지만, 필수라 하기는 어렵습니다. 다만 TCP 프로토콜에 대해 한 번이라도 공부를 한 후에 시작하는 것이 좋습니다.

Case 2 소켓 프로그래밍을 배우고 싶은데 너무 어려워요. 시스템 프로그래밍을 꼭 해야 하나요?

시스템 프로그래밍을 이미 알고 있는 사람이라면 TCP에 대한 공부만 열심히 하는 것으로 소켓 프로그래밍을 쉽게 끝낼 수 있습니다. 그만큼 시스템 프로그래밍에 대한 이해는 중요합니다. 그러나 복잡한 것들을 모두 알 필요는 없고 멀티스레딩 및 동기화 방법만 알아도 학습에 문제는 없습니다.

Case 3 IOCP 서버가 고성능인 건 알겠는데 공부하기가 너무 어려워요.

많은 분들이 IOCP가 어렵다고 생각합니다. 이는 내부 흐름이 눈에 보이지 않고 비동기 파일 입/출력 기법 중 Callback 구조를 이용한 방법에 대해 경험이 부족하기 때문입니다. 소켓의 본질이 파일인 만큼 비동기 입/출력 기법을 제대로 배운다면 쉽게 IOCP도 이해할 수 있습니다. 본 강의는 그러한 문제에 대응할 수 있도록 커리큘럼을 구성했습니다.

Case 4 Client/Server 구조를 사용하고 있는데 적용된 프로토콜이 적절한지, 이렇게 코드를 작성하는 게 맞는지 모르겠어요.

프로토콜 설계라는 말에서 많은 분들이 지레 겁을 먹습니다. 하지만 알고 나면 별 것 아니라는 생각을 하게 됩니다. 특히 송/수신 구조를 코드 수준에서 경험해보면 더욱 그렇습니다. 

Case 5 게임 서버 개발자가 되고 싶어요. 무엇을 공부하면 좋을까요?

게임서버는 고성능, 고가용성이 필수입니다. TCP/IP 프로토콜에 대한 깊은 이해시스템 프로그래밍 능력 그리고 프로토콜 설계 능력이 특히 중요합니다. IOCP같은 고속 입/출력 기법을 아는 것은 필수라 하겠습니다.


학습 내용을 
확인해보세요.

  • TCP/IP 소켓 프로그램을 작성할 수 있습니다. (에코, 채팅)
  • ICOP 기반 고성능 C/C++ 서버를 제작할 수 있습니다.
  • 응용 프로그램 수준 프로토콜 설계 및 관련 코드를 작성하는 기법을 알 수 있습니다.
  • 내가 작성한 응용 프로그램을 운영하는 데 발생할 수 있는 장애 상황을 분석하고 대응할 수 있습니다.
  1. TCP 소켓 프로그래밍 기초 이론
  2. TCP 에코 서버 (멀티스레드 기반)
  3. TCP 채팅 서버 (멀티스레드, I/O 멀티플렉싱, Event select, IOCP)
  1. 파일 송/수신 기법 및 장애 대응
  2. 응용 프로그램 수준 프로토콜 설계, 코드 작성 기법
  3. 비동기 입/출력 원리와 IOCP
  4. UDP 소켓 프로그래밍 기법

선수 지식 및 추천 수강 과정

이 강의를 학습하기 위해서는 아래 강의 커리큘럼에서 다루는 내용에 대한 이해가 필요합니다. 

💾 수강 전 확인해주세요.

  • 실습을 위해 Windows 10 이상 운영체제가 필요합니다. (Linux 및 macOS에서는 실습이 불가능합니다.)
  • 실습에는 Visual Studio 2022 Community 버전을 사용하며, Visual Studio가 실행될 수 있는 수준의 PC 사양이 요구됩니다. (MFC, Windows SDK 포함)
  • 강의에 사용된 장표 PDF 파일과 수업별 예제를 제공합니다. 

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • TCP/IP 소켓 프로그래밍을 배우고 싶은 분

  • Client/Server 구조 프로토콜 설계 기법을 알고 싶은 분

  • 비동기 파일 입/출력을 이해하고 싶은 분

  • 비동기 입/출력이 높은 성능을 낼 수 있는 이유를 알고 싶은 분

  • IOCP 기반 고성능 서버를 개발하고 싶은 분

  • 게임 서버 개발자를 희망하는 분

선수 지식,
필요할까요?

  • 강의 “독하게 되새기는 C 프로그래밍”에 해당하는 내용

  • 강의 “외워서 끝내는 네트워크 핵심이론 - 기초”에 해당하는 내용

안녕하세요
입니다.

37,438

수강생

2,200

수강평

1,102

답변

4.9

강의 평점

25

강의

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

커리큘럼

전체

47개 ∙ (9시간 37분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

45개

5.0

45개의 수강평

  • wjdwlgns8096님의 프로필 이미지
    wjdwlgns8096

    수강평 3

    평균 평점 5.0

    5

    32% 수강 후 작성

    • 널널한 개발자
      지식공유자

      좋은 평가 고맙습니다. :)

  • ichroh님의 프로필 이미지
    ichroh

    수강평 5

    평균 평점 5.0

    5

    32% 수강 후 작성

  • 무무님의 프로필 이미지
    무무

    수강평 6

    평균 평점 5.0

    5

    83% 수강 후 작성

    이전의 시스템 프로그래밍-기본에 이어서 소켓프로그래밍에 들어갔는데, '소켓 = File 이다 / TCP로 가면 TCP Socket' 이다. 라는 게 추상적인 느낌이어서 무슨 말인지 모르겠던 게 명확해진 강의였습니다. 또한 이론으로만 봐서 무슨 내용인지 모르겠었던 3 Handshake의 작동과정 / listen , bind, accept 함수의 사용을 하면서 정말 도면 그대로의 순서로 코딩을 하는구나를 느끼면서 소켓 프로그래밍 도면과도 친구(?)가 될 수 있는 뜻 깊은 강의이기도 한 것 같습니다. ===== 이번 주 까지 소켓 프로그래밍 강의 전체 복습 / 주소록 연결리스트 재공부 이후에 네트워크 프로그래밍에 들어갑니다. 이전의 OS, TCP/IP, 시스템프로그래밍 공부를 하면서 겹치는 게 많다보니 이해가 크게 어렵지 않아 생각보다 진도가 빠르게 나가서 '이게 맞나?' 싶기도 합니다. 허허..

    • 널널한 개발자
      지식공유자

      딱 제가 원했던 결과를 얻으신 것 같습니다. TCP/IP 프로토콜에 대해 알고 시스템 프로그래밍을 제대로 공부한다면 소켓 프로그래밍은 어떤 측면에서 자동으로 끝난다고 생각합니다. 정말 바람직한 방향으로 가고 계신다는 피드백을 드려봅니다. 그리고 네트워크 프로그래밍도 보면 알게 되시겠지만 다소 추상적일 수 있는 TCP/IP에 관한 설명이 왜 그렇게 됐는지 스스로 이해하실 수 있을 것입니다. 좋은 평가 고맙습니다. :)

  • sunny75님의 프로필 이미지
    sunny75

    수강평 98

    평균 평점 5.0

    수정됨

    5

    100% 수강 후 작성

    (25/07/27/일 19:50) 네트워크 로드맵 강의를 다 들었네요. ^^; 각 강의마다 많은 것을 배웠습니다. 이번 강의에서 "항상 비정상 에러상태(LAN선분리)를 생각하라..." 라는 말씀이 제게 확 다가오네요. 좋은 강의 만들어 주셔서 감사합니다.

    • 널널한 개발자
      지식공유자

      이제 저 대신 강의하셔도 될 것 같습니다. 제 강의들 대부분을 섭렵하셨네요. 정말 대단하십니다. :)

  • 김효진님의 프로필 이미지
    김효진

    수강평 2

    평균 평점 5.0

    5

    32% 수강 후 작성

신규 강의 오픈 기념 중

월 ₩15,400

5개월 할부 시

30%

₩110,000

₩77,000

널널한 개발자님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!