[python] 소켓 통신 구현

Hailey Park·2022년 2월 20일
1

TIL

목록 보기
8/8

2/17~2/18 이틀간 스터디원들과 함께 코딩 챌린지 '어썸27'을 진행했다.

이틀 동안 개인 프로젝트를 진행하는 챌린지였고,
나는 CS 네트워크 부분을 공부할 때 궁금했던 양방향 소켓 통신을 이용해 터미널에서 작동하는 간단한 채팅 서버를 구현해보기로 했다.

프로젝트 소개

<목적>

양방향 소켓 통신을 이해하기 위함

<구현 사항>

  1. 소켓을 이용해 친구의 컴퓨터에 접속하는 ReverseShell 프로그램
    • client.py와 server.py를 작성하여,
      동기 은찬님의 컴퓨터에서 client.py를 실행하고
      내 컴퓨터에서 server.py를 실행하는 방식으로 은찬님의 컴퓨터에 접속해서 디렉토리들을 구경했다(?)

(실행해봐주세요라고 했더니 랜섬웨어라고 하는 동기 민혁님 😂😂)

  1. 소켓을 이용한 채팅 서버

    이번에는 AWS EC2가 아닌 Digital Ocean이라는 곳에 서버를 띄워서 진행해보았다.

  • 내가 입력하는 도중에 상대방이 전송하면 나의 말이 끊긴다. (GUI에서 진행하지 않는 한 파이썬에서는 아직 이를 해결할 수 있는 방법이 없다고 한다.)
  • 한번에 여러 명과는 대화를 할 수 없다. (이 부분은 시도해봤는데 실패했지만, 코드를 수정해서 가능하게 할 수도 있을 것 같다.)

성장한 것

기본적인 CRUD가 아닌 다른 기능을 구현해 볼 수 있었고, 네트워크 양방향 소켓 통신에 대해 더 이해할 수 있게 되었다.

개선할 것

  • 소켓 통신을 이해할 수 있게 되었다는 의의가 있지만,
    강의와 블로그를 보며 따라 친 코드라 아직 내가 기획한 것을 바탕으로 처음부터 끝까지 혼자 짠 코드가 아니라는 찝찝한 느낌을 버릴 수 없다.
    지금 구현해본 것을 바탕으로 추후에 아래 기획을 추가해서 처음부터 코드를 짜볼 생각이다.

    • 터미널에서만 작동하는 채팅이라는 점이 아쉽다. GUI환경을 조금이라도 추가할 수 있으면 좋겠다.
    • 유저가 이름을 설정할 수 있는 기능을 추가하고 싶다.
    • NoSQL을 사용해서 채팅 내용을 저장하고 싶다.
profile
I'm a deeply superficial person.

0개의 댓글