학습 로그/Python3

D+50[Python] PySide6 & Server-Client 예제 실습

goodjob^^ 2026. 6. 19. 16:24

ㅇ 일 자 : 2026년 6월 18일(목)

 

ㅇ 주 제 : 네트워크 프로그래밍을 이해하고, 서버와 클라이언트의 구조 예제 실습 

 

[네트워크 프로그래밍 기초 및 소켓 통신 이해]

1. 개요

네트워크 프로그래밍의 핵심 개념인 서버-클라이언트 구조, 주요 네트워크 용어, 그리고 소켓(Socket)을 활용한 데이터 통신 흐름을 이해하는 것을 목적으로 함.

2. 네트워크 프로그래밍의 기본 구조

네트워크 프로그래밍은 서버와 다수의 클라이언트가 네트워크를 통해 데이터를 상호 교환하는 구조를 설계하는 과정이다.

  • 상호작용 원리 : 클라이언트의 요청(Request)에 대해 서버가 응답(Response)하는 구조.
  • 개발 순서 및 동작 흐름: 서비스의 시작점은 클라이언트이며, 서버가 항상 먼저 실행되어 대기 상태를 유지해야 한다.
    1. 서버 : 실행 및 대기(Listening)
    2. 클라이언트 : 연결 요청(Connection Request)
    3. 서버 : 요청 수락(Accept)
    4. 데이터 교환 : 메시지 및 파일 송·수신
    5. 종료 : 연결 해제

3. 핵심 네트워크 용어 정리

  • IP (Internet Protocol) : 통신 대상을 식별하는 컴퓨터 고유의 주소.
  •  
  • Port (포트) : 특정 프로그램에 접근하기 위한 논리적 출입구(번호).
  • TCP (Transmission Control Protocol): 연결 지향적 방식으로, 연결 수립 후 데이터를 순서대로 신뢰성 있게 전달. (대조군: UDP - 비연결형 방식)
  • DNS (Domain Name Server): IP 주소를 사람이 기억하기 쉬운 도메인 이름으로 매핑하여 관리하는 서버.
  • 루프백(Loopback): 자기 자신의 컴퓨터를 가리키는 주소(127.0.0.1, localhost).

4. 소켓(Socket) 프로그래밍

소켓은 네트워크 통신의 종단점(Endpoint) 역할을 하며, 소켓 프로그래밍 자체가 곧 네트워크 프로그래밍임.

  • 동작 로직: 함수들의 배치와 흐름을 이해하고 로직을 구성하는 것이 핵심.
  • 주요 함수 및 단계:
    • socket(): 소켓 생성 (AF_INET, SOCK_STREAM 등 사용)
    • bind(): 소켓에 IP 주소와 포트 번호 결합
    • listen(): 연결 대기 상태로 전환
    • accept(): [중요] 접속 요청 수락. 이 함수를 기점으로 '대기용 소켓'과 실제 '데이터 송수신용 소켓'이 분리됨.

5. 데이터 활용 및 파일 전송

네트워크를 통한 파일 전송은 파일 I/O(입출력) 개념과 소켓 통신을 결합하여 구현함.

  • 파일 객체 생성(open) 및 쓰기 모드 설정.
  • 소켓 내부의 식별 번호를 활용하여 데이터를 목적지까지 정확히 전달하는 로직 구현.

[예제 실습]  내부 가상의 host로 실습에서만 활용

Server-Client 의 예제 실습

Server-Client 의 예제 실습

Server-Client 의 예제 실습