본문 바로가기

공부/tcp/ip 프로그래밍

16장 입출력 스트림의 분리에 대한 나머지 이야기

반응형

입출력_스트림.pptx

Half-close 생성하기 위한 조건

1. 쓰기 스트림 삭제
2. EOF 전달

 

half-close를 하기 위한 방법1(실패)

※ 하나의 파일 디스크립터를 기반으로 입출력 파일 포인터 생성시
    하나의 파일 포인터만 종료되어도 완전 종료된다.
※ 시스템 리소스(여기서는 소켓)는 가리키는 포인터
    (여기서는 파일 디스크립터)가 없을 때 종료된다.

 

 

half-close를 하기 위한 방법2(성공)

 

파일 디스크립터의 복사함수

#include <unistd.h>

 

int dup(int fildes);

int dup2(int fildes, int fildes2);

성공시 복사된 파일 디스크립터, 실패시 -1 반환

 

fildes : 복사할 파일 디스크립터 전달

fildes : 명시적으로 지정할 파일 디스크립터의 정수 값 전달

 

fgets()

EOF(=-1)을 읽거나 또는 읽기를 실패했을 경우 NULL(='\0', 0x00, 문자열의 끝에 들어감)을 돌려줌

 

read()

EOF(=-1)을 읽으면 NULL을 돌려줌, 버퍼가 비었거나 읽기를 실패했을 경우는 -1을 돌려줌

 

int recv(
  _In_   SOCKET s,
  _Out_  char *buf,
  _In_   int len,
  _In_   int flags
);

Return value

If no error occurs, recv returns the number of bytes received 

If the connection has been gracefully closed, the return value is zero.

반응형