1단계: 기본 이론

요약: 개념 → 구조 → 소스코드 → 실행 흐름

더보기

1-1단계: 네트워크 프로그래밍 핵심 개념 이해

  • 네트워크 프로그래밍의 목적과 역할
  • 클라이언트(Client)와 서버(Server)의 개념
  • IP, Port, Socket 기본 개념

1-2단계: 클라이언트–서버 동작 구조 이해

  • 클라이언트 요청(Request) / 서버 응답(Response)
  • 서버 대기(Listen) → 연결(Accept) → 송수신 흐름
  • 단일 연결 기준 실행 흐름 이해

1-3단계: 언어별 소스코드와 실행 흐름 파악

  • PySide6(QTcpServer / QTcpSocket) 구조 이해
  • 간단한 서버–클라이언트 코드 분석
  • 소켓 역할 구분
    • 서버 소켓
    • 클라이언트 소켓
    • 연결된 소켓

 

2단계: 애코 구현 

요약: 데이터 송/수신의 실제 동작 이해

더보기

2-1단계: 서버 수신 구조 이해

  • Telnet 클라이언트 → 서버 데이터 전송
  • 서버에서 데이터 수신 처리
  • readyRead 시그널과 readAll() 이해

2-2단계: 에코 서버 구현

  • 수신 데이터 즉시 재전송(Echo)
  • Telnet → 서버 → Telnet 흐름 체험
  • 서버 측 데이터 처리 구조 이해

2-3단계: 에코 클라이언트 구현

  • PySide6 클라이언트 프로그램 구현
  • 클라이언트 → 서버 전송
  • 서버 에코 → 클라이언트 수신

 

3단계: 소켓 관리 

요약: 단일 연결 → 다중 연결로 구조 확장

더보기

3-1단계: 소켓 역할 복습

  • 2단계에서 사용한 서버 소켓 / 연결 소켓 구조 재확인
  • 단일 클라이언트 구조의 한계 이해

3-2단계: 다중 클라이언트 문제 상황 파악

  • 여러 클라이언트 접속 시 문제 발생 원인
  • client_socket 하나만 사용하는 구조의 한계

3-3단계: 문제 해결 구조 이해

  • 서버에서 여러 클라이언트를 동시에 처리하는 구조
  • 연결된 소켓 저장 및 관리 필요성

3-4단계: 일반적인 서버–클라이언트 구조 설계

  • 연결된 소켓 관리 구조
  • 브로드캐스트(Broadcast) 구조
  • 유니캐스트(Unicast) 구조

3-5단계: 브로드케스트 구현

  • 모든 클라이언트에게 메시지 전달
  • 소켓 반복 처리 구조

3-6단계: 유니캐스트 구현

 

  • 특정 클라이언트 식별
  • 닉네임 또는 소켓 기반 개별 응답

 

 

4단계: 간단한 채팅 서버-클라이언트 구현

더보기
  • 다중 클라이언트 채팅 구조 구현
  • 브로드캐스트 기반 메시지 전달
  • 닉네임 관리 및 유니캐스트 활용

 

5단계: 파일 전송

요약: 문자열 통신 → 실제 응용 통신으로 확장

더보기

5-1단계: 문자열 vs 바이너리 데이터 이해

  • 문자열 데이터와 파일 데이터의 차이
  • 텍스트 기반 통신의 한계
  • 바이너리 데이터 전송 개념

5-2단계: 파일 전송 기본 구조와 프로토콜 설계

  • 파일 전송 시 발생하는 문제 인식
  • 헤더(Header)와 본문(Body) 구조
  • 파일명, 파일 크기 전달 방식

5-3단계: 파일 송/수신 서버–클라이언트 구현

  • 서버 측 파일 수신 및 저장
  • 클라이언트 측 파일 전송
  • 파일 전송 실행 흐름 이해