Boost C++ Libraries/Boost.Asio

Boost.Asio 예제 - C++03 예제

까마귀75 2020. 12. 17. 16:21
728x90
반응형

C++03 예제 (Examples)

메모리 할당 (Allocation)

이 예제는 비동기 작업과 관련된 메모리 할당에 대해 사용자 정의하는 방법을 보여준다.

버퍼 (Buffers)

이 예제는 소켓 읽기/쓰기 작업과 함께 사용할 수 있는 참조 카운터 버퍼를 생성하는 방법을 보여준다.

채팅 (Chat)

이 예제는 채팅 서버와 클라이언트를 구현한다. 프로그램은 고정 길이 메시지 헤더와 가변 길이 메시지 본문을 가진 사용자 정의 프로토콜을 사용한다.

다음 POSIX-전용 채팅 클라이언트는 콘솔 입/출력을 수행하는 posix::stream_descriptor 클래스를 사용하는 방법을 보여준다.

에코 (Echo)

간단한 클라이언트와 서버 예제 모음으로, 동기 및 비동기 작업을 어떻게 사용하는지 보여준다.

포크 (Fork)

이런 POSIX-전용 예제는 fork() 시스템 호출과 함께 Boost.Asio를 사용하는 방법을 보여준다. 첫 번째 예제는 데몬 프로세스를 시작하는데 필요한 단계를 설명한다:

두 번째 예제는 완료 핸들러 내에서 프로세스를 포크(fork)하는 방법을 보여준다.

HTTP 클라이언트 (HTTP Client)

예제 프로그램은 간단하게 HTTP 1.0 클라이언트를 구현한다. 이 예제는 read_untilasync_read_until 함수를 사용하는 방법을 보여준다.

HTTP 서버 (HTTP Server)

이 예제는 HTTP 1.0의 간단한 단일 스레드 서버 구현에서 asio를 사용하는 방법을 보여준다. 처리되지 않은 모든 비동기 작업을 취소하여 깔끔한 종료(a clean shutdown)를 수행하는 방법을 보여준다.

HTTP 서버 2 (HTTP Server 2)

HTTP 서버에 iocontext-per-CPU 디자인을 사용한다.

HTTP 서버 3 (HTTP Server 3)

HTTP 서버는 단일 io_context와 io_context::run()을 호출하는 스레드 풀을 사용한다.

HTTP 서버 4 (HTTP Server 4)

단일 스레드 HTTP 서버는 스택리스 코-루틴을 사용해 구현된다.

ICMP

이 예제는 원격 호스트로 ping을 하기 위해서 ICMP와 함께 로우(raw) 소켓을 사용하는 방법을 보여준다.

호출 (Invocation)

이 예제는 핸들러 호출을 사용자 정의하는 방법을 보여준다. 완료 핸들러는 즉시 실행되지 않고 우선순위 대기열(queue)에 추가된다.

Iostreams

두 가지 예제는 ip::tcp::iostream을 사용하는 방법을 보여준다.

멀티캐스트 (Multicast)

멀티캐스트를 사용하여 가입자의 그룹에 패킷을 전송하는 예제를 보여준다.

직렬화 (Serialization)

이 예제는 Boost.Serialization으로 소켓을 통해 전송하는 인코딩/디코딩 구조를 asio와 함께 사용할 수 있는 방법을 보여준다.

서비스 (Services)

이 예제는 asio의 io_context에 사용자 정의 기능(이 경우 로깅에 대한)을 통합하는 방법과 basic_stream_socket<>로 사용자 정의 서비스를 사용하는 방법을 보여준다.

SOCKS 4

프록시를 통한 통신을 SOCKS 4 프로토콜로 구현하는 클라이언트 프로그램 예제이다.

SSL

클라이언트와 서버 프로그램 예제는 비동기 연산에서 ssl::stream<> 템플릿의 사용을 보여준다.

타임아웃 (Timeouts)

일정 시간 후 오랜 시간 실행하는 비동기 작업을 취소하는 방법을 보여주는 예제의 모음이다.

타이머 (Timers)

다른 클럭 유형을 사용하여 basic_waitable_timer를 사용자 정의하는 방법을 보여주는 예제이다.

Porthopper

동기/비동기 작업이 혼합되고 Boost.Asio와 함께 boost.Lambda를 사용하는 방법을 보여주는 예제이다.

넌블럭킹 (Nonblocking)

I/O 작업 자체를 수행하기 원하는 타사(third-party) 라이브러리를 통합하기 위한 리액터(reactor) 스타일 작업을 보여주는 예제이다.

Spawn

스택형 코-루틴을 사용하여 비동기 작업의 체인을 구현하기 위해 Boost.Coroutine 라이브러리를 감싸는 래퍼인 boost::asio::spawn() 함수를 사용하는 예제이다.

유닉스 도메인 소켓 (UNIX Domain Sockets)

유닉스 도메인 소켓의 사용법을 보여주는 예제이다.

Windows

Boost.Asio와 함께 Windows 지정 함수 TransmitFile을 사용하는 방법을 보여주는 예제이다.



예제 (Examples) Boost.Asio 홈

728x90
반응형