장바구니 담기 close

장바구니에 상품을 담았습니다.

네트워크 멀티스레드 프로그래밍

네트워크 멀티스레드 프로그래밍

  • 유동근
  • |
  • 정보문화사
  • |
  • 2007-09-13 출간
  • |
  • 562페이지
  • |
  • 188 X 235 mm
  • |
  • ISBN 9788956743950
판매가

22,000원

즉시할인가

19,800

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
19,800

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

네트워크 프로그래밍을 강의하면서 교육생들로부터 가장 많이 받는 질문 중의 하나는 "TIME_WAIT" 소켓 상태를 어떻게 없애느냐 하는 것에 관한 질문이다. 필자도 예전에 처음 네트워크 어플리케이션을 개발하면서 이 부분에 대해 많은 의문을 가졌었고, "TIME_WAIT" 상태를 없애기 위해 여러 가지 시도를 했었다. 사실 단순히 이 소켓 상태만 없애도록 하는 것은 간단하다. 인터넷이나 여러 공개된 자료를 보면 이런 방법은 잘 설명되어 있다. 하지만 여기서 중요한 것은 이 상태를 단순히 없애는 하나의 함수를 아는 것이 아니라 이 소켓 상태가 왜 발생하는지와 서버와 클라이언트를 어떻게 설계함으로써 이 상태를 근본적으로 해결할 수 있는지를 아는 것이다. 이 책을 쓰게 된 계기가 바로 여기에 있는 것이다. 필자는 이 책을 쓰면서 "TIME_WAIT" 상태뿐만 아니라 네트워크 함수에 대해서도 단순히 함수의 사용법을 설명하고 싶지는 않았다. 네트워크의 상태와 함수가 어떻게 동작하는지와 그래서 그것을 어떻게 설계에 응용해야 하는지를 쓰고 싶었다. 이 책을 선택한 여러분들도 이런 관점에서 읽어주길 바란다.

그리고 이 책은 스레드에 대해 많은 부분을 할애하고 있다. 왜냐하면 요즘 윈도우 환경에서 네트워크 어플리케이션을 구현할 때 필수적으로 사용되는 것이 바로 스레드이기 때문이다. 이 역시 스레드를 단순히 소개하고 스레드에 사용되는 함수를 설명하고 싶지는 않았다. 그래서 이 책은 스레드와 스레드에 사용되는 함수의 설명뿐만 아니라 스레드 설계 방법과 스레드에서의 예외 처리, 동기화 처리 기법 등 스레드와 관련된 다양한 문제를 설명했다. 물론 윈도우즈는 스레드를 이용하는 다양한 I/O 모델을 제공하기 때문에 네트워크 어플리케이션에서 스레드를 이용하는 여러 방법도 함께 설명했다.

현실적인 문제로 보면 네트워크와 스레드 어플리케이션을 구현할 때 아직까지 MFC 라이브러리를 많이 이용하고 있다. 그래서 이 책은 네트워크 함수와 스레드를 설명하면서 MFC 함수에 대해서도 함께 설명했다. 이 역시 단순히 MFC 함수를 설명하는 것뿐만 아니라 MFC 함수의 내부 동작 원리를 설명하기 위해 노력했다.

여기서 한 가지 명확하게 해둘 것이 있다. 이 책에서 예제로 구현한 소스는 Visual Studio.NET 2003으로 구현되어 있다. 하지만 소스적인 호환성은 현재 개발자들이 사용하는 대부분의 Visual C++에서 유효하기 때문에 자신이 사용하는 컴파일러가 다른 버전이라면 해당 버전에서 프로젝트를 생성한 다음, 소스를 복사해 사용하더라도 대부분 이상 없이 컴파일이 될 것이다. 책을 집필할 때는 하나의 기준 컴파일러를 사용해야 하는 이유 때문에 부득이 하게 Visual Studio.NET 2003을 사용하게 되었음을 이해해주셨으면 한다. 한 가지 아쉬운 점은 책에서 구현한 예제는 원리 설명에 집중하고 지면을 절약하기 위해 큰 규모로 만들지 못했다. 실제 프로젝트에서 사용하는 네트워크 어플리케이션은 대부분은 어느 정도 규모를 가지고 있기 때문에 책에 인쇄하지는 않았지만 책에서 나온 내용을 종합적으로 다루는 예제를 자료실에 올릴 예정이다. 이는 화상 채팅과 음성 채팅을 할 수 있는 예제이므로 책에서 다룬 내용을 종합적으로 이해하는데 많은 도움이 될 것이다.

목차

Chapter 01 TCP/IP와 소켓
Section 1 TCP/IP와 OSI 7계층
프로토콜과 OSI 7계층 / TCP/IP와 OSI 7계층 / 계층별 헤더

Section 2 소켓과 윈도우 소켓
소켓 / 소켓 객체와 소켓 핸들 / 윈도우 소켓

Section 3 첫 번째 소켓 어플리케이션
프로젝트 생성 / 윈도우 소켓 헤더 / 윈도우 소켓 초기화와 해제 / 윈도우 소켓 라이브러리 링크

Section 4 주소 변환
소켓이 사용하는 주소 구조체 / 주소 변환 함수 / 주소 변환 예제

Section 5 바이트 정렬
정수의 메모리 포맷 / 바이트 변환 함수 / 바이트 변환이 필요한 또 하나의 경우

핵심 포인트

Chapter 02 TCP 클라이언트/서버
Section 1 클라이언트 서버 모델

Section 2 TCP 서버 모델
socket / bind / listen / accept / send / recv / closesocket

Section 3 시간 서버로 구현한 TCP 서버
순차 서버와 병렬 서버

Section 4 TCP 클라이언트 모델
connect / 시간 클라이언트 프로젝트

Section 5 TCP 소켓의 상태 변화
TCP three-way handshake / TCP four-way handshake / 소켓의 상태 변화 /
클라이언트의 "TIME_WAIT"는 정상이지만 서버의 "TIME_WAIT"는 에러 /
클라이언트의 "TIME_WAIT"는 제거

핵심 포인트

Chapter 03 UDP 클라이언트/서버
Section 1 UDP 클라이언트 서버 모델
UDP는 메시지 기반 프로토콜이다 / UDP 클라이언트 서버 모델 / recvfrom / sendto

Section 2 UDP 클라이언트 서버로 구현한 에코(echo) 클라이언트 서버
UDP로 구현한 에코(echo) 서버 / UDP로 구현한 에코(echo) 클라이언트

Section 3 멀티캐스트
유니캐스트, 브로드캐스트, 멀티캐스트 / 멀티캐스트 / 멀티캐스트 그룹 가입과 탈퇴

핵심 포인트

Chapter 04 윈도우즈 어플리케이션
Section 1 GUI 윈도우즈 어플리케이션 구조
윈도우즈의 특징 / 윈도우즈 어플리케이션의 시작 / WinMain 기본형 / 메시지 처리 프로시저 /
메인 윈도우가 처리하는 기본 메시지 WM_DESTROY / 메시지 처리와 그리기 / 무효화 영역과 WM_PAINT

Section 2 MFC 어플리케이션 구조
MFC 프로젝트 / MFC 프레임워크 / MFC 클래스 상속과 메시지와 가상 함수 / 핸들과 MFC 클래스

Section 3 MFC 대화상자 기반 프로그램
MFC 대화상자 프로젝트

핵심 포인트

Chapter 05 스레드와 구조화된 예외 처리
Section 1 프로세스와 스레드
윈도우즈 프로세스 / 스레드

Section 2 스레드 생성
스레드 생성 / 스레드 예제 / 스레드 중지와 실행

Section 3 스레드 종료
스레드 종료 상황 / 스레드 시작 함수가 리턴하여 종료되는 경우 /
스레드 내에서 ExitThread 함수를 호출하여 스스로 종료하는 경우 /
다른 스레드에서 TerminateThread 함수를 호출하여 종료시키는 경우 /
프라이머리 스레드가 종료하여 다른 스레드가 강제 종료되는 경우

Section 4 구조화된 예외 처리와 스레드
구조적 예외 처리 / 구조적 예외 처리를 이용한 스레드 설계 / 구조적 종료 처리 /
구조적 예외 처리와 종료 처리를 이용한 스레드 기본 구조

Section 5 워커 스레드와 UI 스레드
워커 스레드(worker thread) / UI 스레드(User Interface thread)

Section 6 MFC의 스레드 구조
MFC의 워커 스레드 구조 / MFC에서 UI 스레드 생성 / MFC의 UI 스레드 구조

핵심 포인트

Chapter 06 스레드 동기화와 스케줄링
Section 1 TLS
스레드와 함수 사이의 변수 사용 관계 / TLS(Thread Local Storage) / Win32 TLS /
Win32 TLS를 위한 예제 / 컴파일러 지원 TLS / MFC TLS / TLS와 ANSI C 런타임 라이브러리

Section 2 스레드 동기화
동기화는 왜 필요한가? / Interlocked- 동기화 / 잊지 말자! volatile /
다시 설계한 "InvertImage" / 크리티컬 섹션

Section 3 커널 객체를 이용한 동기화
신호와 비신호 / 이벤트 / 뮤텍스 / 세마포어 / 동기화 객체의 선택

Section 4 MFC 동기화 객체
CSyncObject / CCriticalSection / CSemaphore / CMutex / CEvent / CSingleLock / CMultiLock

Section 5 스레드 스케줄링
윈도우즈 스케줄러 / 스레드 우선순위 / 퀀텀(quantum) / 스레드 상태?U / 실행 우선순위의 변화

핵심 포인트

Chapter 07 윈도우 소켓 모델
Section 1 소켓 모드와 모델
소켓 모드 / 소켓 모델

Section 2 select 모델
select 모델이란? / select 모델로 구현한 에코 서버 / TCP 에코 클라이언트

핵심 포인트

Chapter 08 WSAAsyncSelect 모델과 MFC
Section 1 WSAAsyncSelect 모델
WSAAsyncSelect 모델이란? / WSAAsyncSelect 모델을 이용한 채팅 서버 /
WSAAsyncSelect 모델을 이용한 채팅 클라이언트

Section 2 MFC와 WSAAsyncSelect 모델
MFC의 소켓 초기화 / CAsyncSocket / CSocket / 직렬화 소켓 / CSocket을 이용한 채팅 클라이언트

핵심 포인트

Chapter 09 WSAEventSelect와 Overlapped 모델
Section 1 WSAEventSelect 모델
WSAEventSelect 모델이란? / WSAEventSelect 모델을 이용한 채팅 서버

Section 2 Overlapped 모델
Overlapped 모델과 접속 처리 / Overlapped 모델 입출력 함수 / Overlapped 모델을 이용한 채팅 서버

핵심 포인트

Chapter 10 완료 루틴과 IOCP 모델
Section 1 완료 루틴 모델
완료 루틴 모델이란? / 완료 루틴 모델을 이용한 채팅 서버

Section 2 IOCP 모델
IOCP 모델이란? / IOCP 모델을 이용한 채팅 서버

Section 3 중요한 소켓 옵션
TCP_NODELAY / SO_KEEPALIVE / SIO_KEEPALIVE_VALS / SO_CONNECT_TIME /
SO_REUSEADDR / SO_SNDBUF, SO_RCVBUF

핵심 포인트

찾아보기

저자소개

저자 소개

유동근
한국기업전산원, 정보지식연구소 근무
삼성전자, 정보통신교육원 및 다수 기업체 강의
중앙일보 ITEA 강사 / 현 삼성SDS멀티캠퍼스 전임교수


감수자 소개

천정아
이화여대대학원
LG전자기술원, LG반도체 근무
삼성전자, 정보통신교육원 및 다수 기업체 강의
현 삼성SDS멀티캠퍼스 전임교수

김현애
(주)동양전자통신, (주)한국에이아이소프트, 오픈텔 근무
삼성전자 및 다수 기업체 강의
현 삼성SDS멀티캠퍼스 전임교수

도서소개

네트워크와 멀티스레드 프로그래밍의 핵심 원리를 파고드는 최고의 가이드
스레드를 이용한 다양한 소켓 I/O 모델 응용 기술


고성능 소켓 어플리케이션을 구현하기 위한 노하우를 담은『네트워크 멀티스레드 프로그래밍』. 이 책은 소켓 함수와 스레드 설계 방법과 스레드에서의 예외 처리, 동기화 처리기법과 네트워크 어플리케이션에서 스레트를 이용하는 방법을 담았다.

TCP/IP와 클라이언트 서버의 관계, 스레드와 구조화된 예외 처리, 동기화와 스케줄링, 윈도우 소켓 모델을 비롯한 다양한 모델을 이용한 채팅 서버 구성하기, 중요한 소켓 옵션 등의 내용을 설명한다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.