728x90
반응형
스트림 짧은 읽기와 짧은 쓰기 (Streams, Short Reads and Short Writes)
Boost.Asio의 많은 I/O 개체는 스트림 지향적(stream-oriented)이다. 이는 다음을 의미한다:
- 메시지 경계가 없다. 전송되는 데이터는 바이트의 연속된 순서다.
- 읽기나 쓰기 작업은 요청된 바이트 수보다 적은 바이트 수를 전송할 수 있다. 이를 짧은 읽기 또는 짧은 쓰기라고 한다.
스트림 지향 I/O 모델을 제공하는 객체는 다음 유형 요건 중 하나 이상을 제공한다:
- SyncReadStream, 여기서 read_some()이라는 멤버 함수를 사용하여 동기식 읽기 작업을 수행한다.
- AsyncReadStream, 여기서 async_read_some()이라는 멤버 함수를 사용하여 비동기식 읽기 작업을 수행한다.
- SyncWriteStream, 여기서 write_some()이라는 멤버 함수를 사용하여 동기식 쓰기 작업을 수행한다.
- AsyncWriteStream, 여기서 async_write_some()이라는 멤버 함수를 사용하여 비동기식 쓰기 작업을 수행한다.
스트림 지향 I/O 객체의 예로 ip::tcp::socket, ssl::stream, posix::stream_descriptor, windows::stream_handle 등이 있다.
일반적으로 프로그램은 정확한 바이트 수를 전송하려고 한다. 짧은 읽기 또는 짧은 쓰기가 발생하면 프로그램은 작업을 다시 시작해야 하며, 필요한 수의 바이트가 전송될 때까지 작업을 계속해야 한다. Boost.Asio는 이 작업을 자동으로 수행하는 일반적인 함수(read(), async_read(), write(), async_write())를 제공한다.
EOF가 오류인 이유
- 스트림의 끝으로 인해 read, async_read, read_until이나 async_read_until와 같은 함수가 지정된 작업을 위반할 수 있다. 예로 N 바이트 읽기는 EOF로 인해 일찍 완료될 수 있다.
- EOF 오류는 0 크기의 성공적인 읽기와 스트림의 끝을 구별하는데 사용될 수 있다.
더 보기
async_read(), async_write(), read(), write(), AsyncReadStream, AsyncWriteStream, SyncReadStream, SyncWriteStream.
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 개요 - 핵심 개념 및 기능 - 라인 기반 작업 (0) | 2020.12.08 |
---|---|
Boost.Asio 개요 - 핵심 개념 및 기능 - Reactor 스타일 작업 (0) | 2020.12.08 |
Boost.Asio 개요 - 핵심 개념 및 기능 - 버퍼 (0) | 2020.12.07 |
Boost.Asio 개요 - 핵심 개념 및 기능 - 스트랜드: 명시적 잠금없이 스레드 사용 (0) | 2020.12.07 |
Boost.Asio 개요 - 핵심 개념 및 기능 - 스레드와 Boost.Asio (0) | 2020.12.07 |