다음 프로젝트는 서적 '초보자를 위한 파이썬 200제'를 기반으로 한 포스팅입니다.
현재 21세기에서 우리는 네트워크를 통해 수많은 데이터를 주고받는다.
예를들어 우리가 아는 아프리카 TV는 UDP 이용한 동영상 스트리밍 서비스가 될 수 도있고,
즐겨하는 게임의 설치파일을 다운로드 하는 등의 다양한 파일이란 데이터도 주고 받을 수 있다.
이번 예제에서는
소켓을 이용한 파일의 송수신을 다뤄보겠다.
먼저 임의의 파일을 제공하기 위한 파일을 가지고 있는 서버가 필요하며,
실제로 파일을 요구하는 클라이언트가 필요하다.
이해를 돕기위한 모식도를 그려보면
다음과 같이 왼쪽의 3가지 컴퓨터(노트북, 스마트폰, 데스크톱)이 실제로 인터넷을 통해
서버에 파일을 요청하는 것을 알 수 있다.
그렇다면 우리는 파일을 제공하기 위한 서버측 프로그램과
파일을 제공받는 클라이언트 쪽 프로그램을 제각기 구현해야한다.
만약 C나 C++을 이용하여도 구현가능하지만 파이썬을 이용하면 훨씬(정성적으로) 더 간단하게 구현 가능하다.
이제 실제로 다음과 같이 구현해보겠다.
이제 만약 서버에 존재하지 않는 파일을 요구할 경우
다음과 같은 에러를 보이며
실제로 존재하는 파일을 요구할 경우
다음과 같이 성공적으로 파일을 다운로드 하게 된다.
실행된 서버에서도
다음과 같이 성공적으로 서버에서 데이터가 전송된 것을 확인 할 수 있다.
실제로 클라이언트의 PC에 성공적으로
데이터가 전송되었는지 확인해보자.
정상적으로 해당폴더에 요구한 파일이 다운로드 된 것을 확인할 수 있다.
서버측 소스코드
클라이언트측 소스코드
고찰
다음의 예제에서는 먼저 서버와 클라이언트를 하나의 PC로 구동하였으나,
이를 네트워크에 연결하여 각기 다른 PC에서 파일 송수신을 하려면
제공하는 서버의 호스트와 포트번호만 변경하여주면 가능한 것이다.
다음의 보여준 기능은 간단한 파일전송이라 크게 와닿지 않을 수도있지만
이를통해 앞서 말한것과 같이 무궁무진한 응용이 가능하다
UDP소켓을 이용해서 들어온 데이터를 실시간으로 렌더링 하여 보여준다면
유투브와 같은 동영상 스트리밍 서비스를 구현할 수 도있으며,
보안 취약점을 찾은 PC에 접속하여 추후에 원활한 공격을 위해 백도어를 설치하게끔 할 수 있다.
몇줄 안되는 코드로
다음과 같은 기능을 구현할 수 있는 파이썬 조금씩 재미가 붙는 것 같다.
'IT > 프로젝트 및 실습' 카테고리의 다른 글
안드로이드 어플리케이션 [알러빗가계부] (3) | 2018.01.19 |
---|---|
python을 이용한 다중 채팅 구현하기 (12) | 2018.01.02 |
python을 이용한 간단한 슈팅게임 만들기 (14) | 2018.01.01 |
python을 이용한 웹서버 로그 처리하기 (0) | 2017.12.29 |
python을 이용한 연도별 출생아 수 계산하기 (0) | 2017.12.28 |