C++/소켓통신

MFC에서 소켓을 이용한 파일전송기 만들기

gandus 2011. 5. 16. 17:09
우왕.. 제목을 써 놓고 보니 그럴듯 하군여.. 안녕들 하세여..

제목 그대로 소켓을 이용한 네트워크 환경에서 서로다른 컴퓨터간에 파일을 전송할 
수 있는 애플리케이션 만드는 방법에 대해서 강좌를 올려볼까 합니다. 여기 저기 돌아
다녀 봐도 소켓관련해서는 간단한 메시지를 주고받는 채팅 프로그램에 대해서는 많이
들 이야기 하고 있는데, 파일전송과 같이 큰 바이너리 데이터를 전송하는 것에 대해서
는 자료가 별로 없는 것 같아서 허접하지만 제가 함 해볼려고 합니다.

제목에서 알 수 있듯이 개발환경은 MFC에서 하기 때문에 MFC클래스들 만으로 기능을 
구현할 것이며, 이 강좌에서는 API함수에 대해서는 별로 이야기 되지는 않을 것입니
다. 그런데, 일반적으로 MFC는 API로만 코딩된 애플리케이션에 비해 무겁다는 생각을 
가진 분들이 많으신거 같은데, 사실은 MFC가 API들을 캡슐화 해 놓았을 뿐 별다른 차
이가 없습니다. 즉, 우리는 MFC 클래스를 사용해서 코딩할 것이지만, 그 클래스들이 
내부적으로 API함수들을 호출하고 있기 때문에 성능에서 별 차이가 없어 보입니다.
물론 프로젝트의 내용에 따라 위저드가 코딩해준 일부분은 전혀 필요 없는 부분이기
도 하겠지만, 이 강좌에서 만들 애플리케이션은 이런거 생각하지 않으셔도 될것같군
요.

이 강좌는 비주얼 C++ 초급자를 대상으로 하고 있지만, 강좌에서 만들어지는 예제 애
플리케이션의 수준은 중급 이상이 될거라고 생각합니다.
강좌에서 만들어볼 애플리케이션에서 구현해볼 기능은 다음과 같습니다.
1. 일단은 소켓을 통해서 파일을 전송하는데, 전송되는 파일의 용량과 파일수를 무제
한으로 허용하게 한다.
2. 서버측에서는 다중접속을 지원해서 여러 클라이언트가 동시에 접속하는 것을 허용
한다.
3. 파일을 전송하는 동안 작업의 진행도를 표시해준다.

따라서, 이 강좌가 무사히 끝마치게 된다면, 이 강좌를 통해 여러분들은 다음의 기술
들을 배울 수 있을 것으로 기대됩니다.
1. 소켓으로 파일을 전송하고 받는 방법
2. 소켓을 통한 원격지의 프로세스간 대화하는 방법
3. 서버측에서 다중접속을 지원하는 방법
4. CPU타임을 독차지하는 작업 수행시 사용자 인터페이스를 매끈하게 처리하는 방법

이상, 기타등등인데, 이들 내용은 허접한 제 생각에는 상당히 고급스러운 주제들 인
거 같군요.. ^^;
강좌를 보시는 분들이 초급자로서 중급자로 도약하고자 하시는 분들이라면 상당히 많
은 것을 얻으실 수 있을 듯 합니다. 저는 아마도 이 강좌를 반가워 하실 분들이 꽤 있
을 것으로 사료됩니다만... 아무도 이 강좌에 신경을 쓰지 않는다면..ㅜ.ㅜ 전 아마 
힘빠져서 강좌 계속 못할거 같습니다..

제 아이디가 왜 chapter2 인지 아시나여?? 여러분은 어떨때 기분이 좋으신가요? 전 깨
끗한 표지와 빧빧한 책장들로 구성된 새책을 샀을때 아주 기분이 좋습니다. 서점에서 
둘러보다가 "그래 !! 바로 이책이야!!" 하는 책을 발견하고는 책값은 고려하지도 않
고 얼른 사가지고는 집으로 돌아오는 길의 그 짜릿한 기분...

근데 대부분의 책이 2장을 넘어서기가 힘들더군여..ㅜ.ㅜ;;;; 그래서 한 맺힌 2장 이
란 뜻으로 제 아이뒤가 chapter2가 된 겁니다. 여기까지 읽으신분들중에 혹시 헉, 이
양반 무지 공부를 싫어하는군 하고 생각하신다면 맞습니다만, 제가 끝까지 독파한 책
도 상당분량 됩니다.

될 수 있는 한 이 강좌를 끝마치고 싶습니다. 강좌를 보시는 분들에게 조금이나마 도
움이 되길 바라면서...
그럼 여러분들 반응봐서 계속강좌를 올려보겠습니다. 건투를 빌어주세요..


출처 : 데브피아 - 최훈익 님의 강좌

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=1390&ref=632