1. 작업 환경 

    - Oracle VM VirtualBox

    - ubuntu 22.04

    - PuTTY

    - 언어 : C

 

2. 조건 

    - 실행 방법

       * 서버 프로그램 : $./file_server 5000 recv.txt

       * 클라이언트 프로그램 : $./file_client 127.0.0.1 5000 file_client.c

    - 클라이언트 프로그램에서는 네번째 아그먼트 파일이름 file_client.c100 Byte 읽어 전송하고,

      서버프로그램은 세 번째 아그먼트 파일이름 recv.txt 파일로 동일한 파일 사이즈로 저장

    - 명령행 아그먼트가 조건에 맞지 않을 경우 사용법을 출력

       * 서버 프로그램 : Usage : ./server_file <port> <file> 

       * 클라이언트 프로그램 : Usage : ./client_file <IP> <port> <file>

    - 서버 프로그램에서는 저장한 파일이 존재하지 않을 경우 새로 파일을 생성하고, 파일이 존재할 때는 모든 내용을 지우

       고 새로 저장, 파일 속성은 644

    - 클라이언트 프로그램에서 읽을 파일이 존재하지 않을 경우 perror() 함수를 사용하여 오류 원인 메시지를 출력

       * <file> file open error

       * open() : No such file or directory

    - 모든 시스템 콜 함수는 예외 처리를 반드시 처리하여 에러 메시지를 출력

 

3. Server 코드 작성 

     * 깃허브 : https://github.com/Byungeun/file_transfer

    - TCP/IP 소캣 프로그래밍에서 사용하는 기본 코드를 활용하여 파일 전송 서버/클라이언트를 코드를 작성

    - 사용할 변수 선언

    - 조건절 중 우선적으로 아그먼트 수를 확인하고 미충족시 종료하는 코드 작성

    - 다음으로는 불필요하게 코드가 실행되지 않도록 콜 함수를 사용해서 파일을 오픈하고, 데이터가 없을시 종료하는

      코드 작성 

    - 아그먼트 수가 충족, 데이터 유무 파악 후 통신을 위한 소캣 함수 부터 작성함 

    - Server에서 사용자 정의로 수정할때는 accept() 함수 이후 코드를 작성하는데  소켓으로 받아 온 데이터가 존재할 경우,

      while문을 활용하여 정해진 데이터 크기에 맞게 파일을 읽고 저장하는 것을 전송 완료시까지 반복하는 코드 작성  

    - 데이터가 전송될때 마다 출력

 

4. Client 코드 작성 

     * 깃허브 : https://github.com/Byungeun/file_transfer

    - TCP/IP 소캣 프로그래밍에서 사용하는 기본 코드를 활용하여 파일 전송 서버/클라이언트를 코드를 작성

    - 사용할 변수 선언

    - 조건절 중 우선적으로 아그먼트 수를 확인하고 미충족시 종료하는 코드 작성

    - 다음으로는 불필요하게 코드가 실행되지 않도록 콜 함수를 사용해서 파일을 오픈하고, 데이터가 없을시 종료하는

      코드 작성 

    - 아그먼트 수가 충족, 데이터 유무 파악 후 통신을 위한 소캣 함수부터 작성함 

    - Client 에서 사용자 정의로 수정할때는 connect() 함수 이후 코드를 작성하는데  오픈한 데이터가 존재할 경우, while문

      을 활용하여 정해진 데이터 크기에 맞게 파일을 읽고 완료시까지 반복 전송하는 코드 작성

'C언어' 카테고리의 다른 글

TCP/IP 소켓 프로그래밍  (0) 2024.10.10
간단한 파일 복사 유틸리티 구현  (0) 2024.10.10
C언어 연산자  (0) 2024.10.08
C언어 문자열 저장 (2)  (1) 2024.10.08
C언어 문자열 저장 (포인터, 배열 포함)  (0) 2024.10.08

+ Recent posts