본문 바로가기
Develop/Network

[윤성우의 열혈 TCP/IP 소켓 프로그래밍] Chapter16 - 내용 확인 문제 풀이

by Tarra 2023. 7. 1.

 

 

 

 

 [윤성우의 열혈 TCP / IP 소켓 프로그래밍] 책을 기반으로 개인적으로  문제 풀이 및 개념을 정리한 내용입니다.

모든 소스 코드와 강의, 확인 문제의 정확한 답안은 (23년 7월 1일부터 전면 무료화 예정)

http://www.orentec.co.kr/

 

====== 오렌지 미디어 ======

 

www.orentec.co.kr

에서 확인할 수 있습니다.

 

 


 

 

01. 다음 중 FILE 구조체의 포인터와 파일 디스크립터에 대한 설명으로 옳지 않은 것을 모두 고르면?

a. FILE 구조체의 포인터와 마찬가지로 파일 디스크립터도 입력용과 출력용이 나뉜다.

FILE 구조체의 포인터와 마찬가지로 파일 디스크립터도 입력용과 출력용으로 나뉘지 않는다.

파일 디스크립터는 파일 또는 소켓과의 상호작용을 위해 사용되는 정수 값이다. 파일 디스크립터 자체에는 입력 또는 출력의 구분이 없다.

 

b. 파일 디스크립터가 복사되면 동일한 정수 값의 파일 디스크립터가 하나 더 추가되어서 총 두 개의 파일 디스크립터로 데이터를 입출력 할 수 있게 된다.

파일 디스크립터가 복사되면, 동일한 정수 값의 파일 디스크립터가 하나 더 추가되지 않는다.

파일 디스크립터는 운영체제에서 관리하는 파일 또는 소켓에 대한 식별자이며, 복사되어도 개별적인 식별자로 동작한다.

 

c. 소켓 생성시 반환된 파일 디스크립터를 이용해서 입출력을 진행하는데, 파일 디스크립터를 거치지 않고 바로 소켓의 FILE 구조체의 포인터를 이용하면 소켓 기반의 데이터 입출력도 가능하다.

소켓을 생성하면 해당 소켓에 대한 파일 디스크립터가 반환된다. 소켓의 FILE 구조체 포인터를 직접 사용하여 데이터 입출력을 진행하는 것은 일반적으로 권장되지 않는다. 표준 C 라이브러리 함수인 'stdio' 함수들은 파일 디스크립터를 직접 다루지 않으며, 소켓과 관련된 데이터 입출력을 위해서는 소켓 관련 함수를 사용해야 한다.

 

d. 파일 디스크립터를 기반으로 FILE 구조체의 포인터를 생성하는 것은 가능하다. 그리고 이렇게 생성된 FILE 구조체의 포인터를 이용하면 소켓 기반의 데이터 입출력도 가능하다.

 

e. 파일 디스크립터가 읽기모드이면, 이를 기반으로 생성되는 FILE 구조체의 포인터도 읽기모드가 되고, 파일 디스크립터가 쓰기모드이면, 이를 기반으로 생성되는 FILE 구조체의 포인터도 쓰기모드가 된다.

파일 디스크립터가 읽기 모드일 때 파일 디스크립터를 기반으로 생성된 FILE 구조체의 포인터도 읽기 모드가 되는 것은 맞지만,

파일 디스크립터가 쓰기 모드일 때 FILE 구조체의 포인터도 쓰기 모드가 되는 것은 잘못된 설명이다.

FILE 구조체의 포인터는 입출력 방향을 나타내는 모드를 가지지 않는다.

 

정답은 a, b, c, e 이다

 

 

02. EOF의 전송과 관련해서 옳지 않은 것을 모두 고르면?

a. 파일 디스크립터가 종료되면 EOF가 전달된다.

b. 파일 디스크립터를 완전히 종료하지 않아도 출력 스트림에 대해서 종료를 진행하면 EOF가 전달된다.

c. 파일 디스크립터가 복사되고 나면, 복사된 파일 디스크립터까지 모두 종료되어야 EOF가 전달된다.

d. 파일 디스크립터가 복사된 상황이라 할지라도 shutdown 함수호출을 통해서 Half-close를 진행하면 상대 호스트로 EOF가 전달된다.


정답 모두 옳음.

 

 


출처 : [윤성우의 열혈 TCP / IP 소켓 프로그래밍] / 윤성우 저 / 오렌지 미디어

https://cafe.naver.com/cstudyjava

 

윤성우의 프로그래밍 스터디그룹 [C/... : 네이버 카페

윤성우의 스터디 공간입니다. C와 JAVA를 공부하시는 분들은 모두 들어오세요. ^^

cafe.naver.com