목차
chapter 01 TCP/IP와 소켓 ... 11
   Section 1 TCP/IP와 OSI 7계층 ... 13
      프로토콜과 OSI 7계층 ... 13
      TCP/IP와 OSI 7계층 ... 16
      계층별 헤더 ... 20
   Section 2 소켓과 윈도우 소켓 ... 22
      소켓 ... 22
      소켓 객체와 소켓 핸들 ... 23
      윈도우 소켓 ... 26
   Section 3 첫 번째 소켓 어플리케이션 ... 29
      프로젝트 생성 ... 29
      윈도우 소켓 헤더 ... 33
      윈도우 소켓 초기화와 해제 ... 33
      윈도우 소켓 라이브러리 링크 ... 36
   Section 4 주소 변환 ... 37
      소켓이 사용하는 주소 구조체 ... 38
      주소 변환 함수 ... 44
      주소 변환 예제 ... 48
   Section 5 바이트 정렬 ... 52
      정수의 메모리 포맷 ... 52
      바이트 변환 함수 ... 53
      바이트 변환이 필요한 또 하나의 경우 ... 54
   핵심 포인트 ... 55
chapter 02 TCP 클라이언트/서버 ... 59
   Section 1 클라이언트 서버 모델 ... 61
   Section 2 TCP 서버 모델 ... 63
socket ... 64
bind ... 68
      listen ... 71
      accept ... 73
send ... 76
      recv ... 77
      closesocket ... 79
   Section 3 시간 서버로 구현한 TCP 서버 ... 80
      순차 서버와 병렬 서버 ... 85
   Section 4 TCP 클라이언트 모델 ... 88
      connect ... 88
      시간 클라이언트 프로젝트 ... 90
   Section 5 TCP 소켓의 상태 변화 ... 94
      TCP three-way handshake ... 94
      TCP four-way handshake ... 95
      소켓의 상태 변화 ... 97
      클라이언트의 "TIME_WAIT"는 정상이지만 서버의 "TIME_WAIT"는 에러 ... 103
      클라이언트의 "TIME_WAIT"는 제거 ... 106
   핵심 포인트 ... 107
chapter 03 UDP 클라이언트/서버 ... 109
   Section 1 UDP 클라이언트 서버 모델 ... 111
      UDP는 메시지 기반 프로토콜이다 ... 111
      UDP 클라이언트 서버 모델 ... 114
      recvfrom ... 115
sendto ... 118
   Section 2 UDP 클라이언트 서버로 구현한 에코(echo) 클라이언트 서버 ... 120
      UDP로 구현한 에코(echo) 서버 ... 120
      UDP로 구현한 에코(echo) 클라이언트 ... 123
   Section 3 멀티캐스트 ... 128
      유니캐스트, 브로드캐스트, 멀티캐스트 ... 128
      멀티캐스트 ... 133
      멀티캐스트 그룹 가입과 탈퇴 ... 135
   핵심 포인트 ... 140
chapter 04 윈도우즈 어플리케이션 ... 143
   Section 1 GUI 윈도우즈 어플리케이션 구조 ... 145
      윈도우즈의 특징 ... 145
      윈도우즈 어플리케이션의 시작 ... 147
      WinMain 기본형 ... 150
      메시지 처리 프로시저 ... 158
      메인 윈도우가 처리하는 기본 메시지 WM_DESTROY ... 160
      메시지 처리와 그리기 ... 162
      무효화 영역과 WM_PAINT ... 165
   Section 2 MFC 어플리케이션 구조 ... 169
      MFC 프로젝트 ... 169
      MFC 프레임워크 ... 178
      MFC 클래스 상속과 메시지와 가상 함수 ... 183
      핸들과 MFC 클래스 ... 185
   Section 3 MFC 대화상자 기반 프로그램 ... 186
      MFC 대화상자 프로젝트 ... 186
   핵심 포인트 ... 191
chapter 05 스레드와 구조화된 예외 처리 ... 193
   Section 1 프로세스와 스레드 ... 195
      윈도우즈 프로세스 ... 195
      스레드 ... 198
   Section 2 스레드 생성 ... 201
      스레드 생성 ... 201
      스레드 예제 ... 205
      스레드 중지와 실행 ... 216
   Section 3 스레드 종료 ... 218
      스레드 종료 상황 ... 218
      스레드 시작 함수가 리턴하여 종료되는 경우 ... 220
      스레드 내에서 ExitThread 함수를 호출하여 스스로 종료하는 경우 ... 221
      다른 스레드에서 TerminateThread 함수를 호출하여 종료시키는 경우 ... 223
      프라이머리 스레드가 종료하여 다른 스레드가 강제 종료되는 경우 ... 225
   Section 4 구조화된 예외 처리와 스레드 ... 225
      구조적 예외 처리 ... 226
      구조적 예외 처리를 이용한 스레드 설계 ... 228
      구조적 종료 처리 ... 233
      구조적 예외 처리와 종료 처리를 이용한 스레드 기본 구조 ... 236
   Section 5 워커 스레드와 UI 스레드 ... 240
      워커 스레드(worker thread) ... 240
      UI 스레드(User Interface thread) ... 241
   Section 6 MFC의 스레드 구조 ... 249
      MFC의 워커 스레드 구조 ... 250
      MFC에서 UI 스레드 생성 ... 258
      MFC의 UI 스레드 구조 ... 267
   핵심 포인트 ... 271
chapter 06 스레드 동기화와 스케줄링 ... 273
   Section 1 TLS ... 275
      스레드와 함수 사이의 변수 사용 관계 ... 275
      TLS(Thread Local Storage) ... 277
      Win32 TLS ... 278
      Win32 TLS를 위한 예제 ... 281
      컴파일러 지원 TLS ... 288
      MFC TLS ... 290
      TLS와 ANSI C 런타임 라이브러리 ... 294
   Section 2 스레드 동기화 ... 302
      동기화는 왜 필요한가? ... 302
      Interlocked- 동기화 ... 304
      잊지 말자! volatile ... 307
      다시 설계한 "InvertImage" ... 309
      크리티컬 섹션 ... 310
   Section 3 커널 객체를 이용한 동기화 ... 314
      신호와 비신호 ... 314
      이벤트 ... 318
      뮤텍스 ... 327
      세마포어 ... 331
      동기화 객체의 선택 ... 335
   Section 4 MFC 동기화 객체 ... 335
      CSyncObject ... 335
      CCriticalSection ... 336
      CSemaphore ... 338
      CMutex ... 339
      CEvent ... 340
      CSingleLock ... 341
      CMultiLock ... 342
   Section 5 스레드 스케줄링 ... 344
      윈도우즈 스케줄러 ... 344
      스레드 우선순위 ... 345
      퀀텀(quantum) ... 349
      스레드 상태 ... 349
      실행 우선순위의 변화 ... 351
   핵심 포인트 ... 353
chapter 07 윈도우 소켓 모델 ... 355
   Section 1 소켓 모드와 모델 ... 357
      소켓 모드 ... 357
      소켓 모델 ... 364
   Section 2 select 모델 ... 369
select 모델이란? ... 369
select 모델로 구현한 에코 서버 ... 373
      TCP 에코 클라이언트 ... 381
   핵심 포인트 ... 385
chapter 08 WSAAsyncSelect 모델과 MFC ... 389
   Section 1 WSAAsyncSelect 모델 ... 391
      WSAAsyncSelect 모델이란? ... 391
      WSAAsyncSelect 모델을 이용한 채팅 서버 ... 396
      WSAAsyncSelect 모델을 이용한 채팅 클라이언트 ... 408
   Section 2 MFC와 WSAAsyncSelect 모델 ... 421
      MFC의 소켓 초기화 ... 421
      CAsyncSocket ... 424
      CSocket ... 430
      직렬화 소켓 ... 432
      CSocket을 이용한 채팅 클라이언트 ... 434
   핵심 포인트 ... 445
chapter 09 WSAEventSelect와 Overlapped 모델 ... 447
   Section 1 WSAEventSelect 모델 ... 449
      WSAEventSelect 모델이란? ... 449
      WSAEventSelect 모델을 이용한 채팅 서버 ... 458
   Section 2 Overlapped 모델 ... 472
      Overlapped 모델과 접속 처리 ... 472
      Overlapped 모델 입출력 함수 ... 479
      Overlapped 모델을 이용한 채팅 서버 ... 486
   핵심 포인트 ... 496
chapter 10 완료 루틴과 IOCP 모델 ... 499
   Section 1 완료 루틴 모델 ... 501
      완료 루틴 모델이란? ... 501
      완료 루틴 모델을 이용한 채팅 서버 ... 508
   Section 2 IOCP 모델 ... 518
      IOCP 모델이란? ... 519
      IOCP 모델을 이용한 채팅 서버 ... 527
   Section 3 중요한 소켓 옵션 ... 542
      TCP_NODELAY ... 542
      SO_KEEPALIVE ... 546
      SIO_KEEPALIVE_VALS ... 547
      SO_CONNECT_TIME ... 549
      SO_REUSEADDR ... 550
      SO_SNDBUF, SO_RCVBUF ... 551
   핵심 포인트 ... 552
찾아보기 ... 554
닫기