네트워크 프로그래밍 학습 순서

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단계: 파일 송/수신 서버–클라이언트 구현
- 서버 측 파일 수신 및 저장
- 클라이언트 측 파일 전송
- 파일 전송 실행 흐름 이해