C++03 예제 (Examples)
메모리 할당 (Allocation)
이 예제는 비동기 작업과 관련된 메모리 할당에 대해 사용자 정의하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/allocation/server.cpp
- 설명 링크: server.cpp
버퍼 (Buffers)
이 예제는 소켓 읽기/쓰기 작업과 함께 사용할 수 있는 참조 카운터 버퍼를 생성하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/buffers/reference_counted.cpp
- 설명: reference_counted.cpp
채팅 (Chat)
이 예제는 채팅 서버와 클라이언트를 구현한다. 프로그램은 고정 길이 메시지 헤더와 가변 길이 메시지 본문을 가진 사용자 정의 프로토콜을 사용한다.
- 원본: boost_asio/example/cpp03/chat/chat_message.hpp
- 설명: chat_message.hpp
- 원본: boost_asio/example/cpp03/chat/chat_client.cpp
- 설명: chat_client.cpp
- 원본: boost_asio/example/cpp03/chat/chat_server.cpp
- 설명: chat_server.cpp
다음 POSIX-전용 채팅 클라이언트는 콘솔 입/출력을 수행하는 posix::stream_descriptor 클래스를 사용하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/chat/posix_chat_client.cpp
- 설명: posix_chat_client.cpp
에코 (Echo)
간단한 클라이언트와 서버 예제 모음으로, 동기 및 비동기 작업을 어떻게 사용하는지 보여준다.
- 원본: boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp
- 설명: async_tcp_echo_server.cpp
- 원본: boost_asio/example/cpp03/echo/async_udp_echo_server.cpp
- 설명: async_udp_echo_server.cpp
- 원본: boost_asio/example/cpp03/echo/blocking_tcp_echo_client.cpp
- 설명: blocking_tcp_echo_client.cpp
- 원본: boost_asio/example/cpp03/echo/blocking_tcp_echo_server.cpp
- 설명: blocking_tcp_echo_server.cpp
- 원본: boost_asio/example/cpp03/echo/blocking_udp_echo_client.cpp
- 설명: blocking_udp_echo_client.cpp
- 원본: boost_asio/example/cpp03/echo/blocking_udp_echo_server.cpp
- 설명: blocking_udp_echo_server.cpp
포크 (Fork)
이런 POSIX-전용 예제는 fork() 시스템 호출과 함께 Boost.Asio를 사용하는 방법을 보여준다. 첫 번째 예제는 데몬 프로세스를 시작하는데 필요한 단계를 설명한다:
- 원본: boost_asio/example/cpp03/fork/daemon.cpp
- 설명: daemon.cpp
두 번째 예제는 완료 핸들러 내에서 프로세스를 포크(fork)하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/fork/process_per_connection.cpp
- 설명: process_per_connection.cpp
HTTP 클라이언트 (HTTP Client)
예제 프로그램은 간단하게 HTTP 1.0 클라이언트를 구현한다. 이 예제는 read_until과 async_read_until 함수를 사용하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/http/client/sync_client.cpp
- 설명: sync_client.cpp
- 원본: boost_asio/example/cpp03/http/client/async_client.cpp
- 설명: async_client.cpp
HTTP 서버 (HTTP Server)
이 예제는 HTTP 1.0의 간단한 단일 스레드 서버 구현에서 asio를 사용하는 방법을 보여준다. 처리되지 않은 모든 비동기 작업을 취소하여 깔끔한 종료(a clean shutdown)를 수행하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/http/server/connection.cpp
- 설명: connection.cpp
- 원본: boost_asio/example/cpp03/http/server/connection.hpp
- 설명: connection.hpp
- 원본: boost_asio/example/cpp03/http/server/connection_manager.cpp
- 설명: connection_manager.cpp
- 원본: boost_asio/example/cpp03/http/server/connection_manager.hpp
- 설명: connection_manager.hpp
- 원본: boost_asio/example/cpp03/http/server/header.hpp
- 설명: header.hpp
- 원본: boost_asio/example/cpp03/http/server/main.cpp
- 설명: main.cpp
- 원본: boost_asio/example/cpp03/http/server/mime_types.cpp
- 설명: mime_types.cpp
- 원본: boost_asio/example/cpp03/http/server/mime_types.hpp
- 설명: mime_types.hpp
- 원본: boost_asio/example/cpp03/http/server/reply.cpp
- 설명: reply.cpp
- 원본: boost_asio/example/cpp03/http/server/reply.hpp
- 설명: reply.hpp
- 원본: boost_asio/example/cpp03/http/server/request.hpp
- 설명: request.hpp
- 원본: boost_asio/example/cpp03/http/server/request_handler.cpp
- 설명: request_handler.cpp
- 원본: boost_asio/example/cpp03/http/server/request_handler.hpp
- 설명: request_handler.hpp
- 원본: boost_asio/example/cpp03/http/server/request_parser.cpp
- 설명: request_parser.cpp
- 원본: boost_asio/example/cpp03/http/server/request_parser.hpp
- 설명: request_parser.hpp
- 원본: boost_asio/example/cpp03/http/server/server.cpp
- 설명: server.cpp
- 원본: boost_asio/example/cpp03/http/server/server.hpp
- 설명: server.hpp
HTTP 서버 2 (HTTP Server 2)
HTTP 서버에 iocontext-per-CPU 디자인을 사용한다.
- 원본: boost_asio/example/cpp03/http/server2/connection.cpp
- 설명: connection.cpp
- 원본: boost_asio/example/cpp03/http/server2/connection.hpp
- 설명: connection.hpp
- 원본: boost_asio/example/cpp03/http/server2/header.hpp
- 설명: header.hpp
- 원본: boost_asio/example/cpp03/http/server2/io_context_pool.cpp
- 설명: io_context_pool.cpp
- 원본: boost_asio/example/cpp03/http/server2/io_context_pool.hpp
- 설명: io_context_pool.hpp
- 원본: boost_asio/example/cpp03/http/server2/main.cpp
- 설명: main.cpp
- 원본: boost_asio/example/cpp03/http/server2/mime_types.cpp
- 설명: mime_types.cpp
- 원본: boost_asio/example/cpp03/http/server2/mime_types.hpp
- 설명: mime_types.hpp
- 원본: boost_asio/example/cpp03/http/server2/reply.cpp
- 설명: reply.cpp
- 원본: boost_asio/example/cpp03/http/server2/reply.hpp
- 설명: reply.hpp
- 원본: boost_asio/example/cpp03/http/server2/request.hpp
- 설명: request.hpp
- 원본: boost_asio/example/cpp03/http/server2/request_handler.cpp
- 설명: request_handler.cpp
- 원본: boost_asio/example/cpp03/http/server2/request_handler.hpp
- 설명: request_handler.hpp
- 원본: boost_asio/example/cpp03/http/server2/request_parser.cpp
- 설명: request_parser.cpp
- 원본: boost_asio/example/cpp03/http/server2/request_parser.hpp
- 설명: request_parser.hpp
- 원본: boost_asio/example/cpp03/http/server2/server.cpp
- 설명: server.cpp
- 원본: boost_asio/example/cpp03/http/server2/server.hpp
- 설명: server.hpp
HTTP 서버 3 (HTTP Server 3)
HTTP 서버는 단일 io_context와 io_context::run()을 호출하는 스레드 풀을 사용한다.
- 원본: boost_asio/example/cpp03/http/server3/connection.cpp
- 설명: connection.cpp
- 원본: boost_asio/example/cpp03/http/server3/connection.hpp
- 설명: connection.hpp
- 원본: boost_asio/example/cpp03/http/server3/header.hpp
- 설명: header.hpp
- 원본: boost_asio/example/cpp03/http/server3/main.cpp
- 설명: main.cpp
- 원본: boost_asio/example/cpp03/http/server3/mime_types.cpp
- 설명: mime_types.cpp
- 원본: boost_asio/example/cpp03/http/server3/mime_types.hpp
- 설명: mime_types.hpp
- 원본: boost_asio/example/cpp03/http/server3/reply.cpp
- 설명: reply.cpp
- 원본: boost_asio/example/cpp03/http/server3/reply.hpp
- 설명: reply.hpp
- 원본: boost_asio/example/cpp03/http/server3/request.hpp
- 설명: request.hpp
- 원본: boost_asio/example/cpp03/http/server3/request_handler.cpp
- 설명: request_handler.cpp
- 원본: boost_asio/example/cpp03/http/server3/request_handler.hpp
- 설명: request_handler.hpp
- 원본: boost_asio/example/cpp03/http/server3/request_parser.cpp
- 설명: request_parser.cpp
- 원본: boost_asio/example/cpp03/http/server3/request_parser.hpp
- 설명: request_parser.hpp
- 원본: boost_asio/example/cpp03/http/server3/server.cpp
- 설명: server.cpp
- 원본: boost_asio/example/cpp03/http/server3/server.hpp
- 설명: server.hpp
HTTP 서버 4 (HTTP Server 4)
단일 스레드 HTTP 서버는 스택리스 코-루틴을 사용해 구현된다.
- 원본: boost_asio/example/cpp03/http/server4/file_handler.cpp
- 설명: file_handler.cpp
- 원본: boost_asio/example/cpp03/http/server4/file_handler.hpp
- 설명: file_handler.hpp
- 원본: boost_asio/example/cpp03/http/server4/header.hpp
- 설명: header.hpp
- 원본: boost_asio/example/cpp03/http/server4/main.cpp
- 설명: main.cpp
- 원본: boost_asio/example/cpp03/http/server4/mime_types.cpp
- 설명: mime_types.cpp
- 원본: boost_asio/example/cpp03/http/server4/mime_types.hpp
- 설명: mime_types.hpp
- 원본: boost_asio/example/cpp03/http/server4/reply.cpp
- 설명: reply.cpp
- 원본: boost_asio/example/cpp03/http/server4/reply.hpp
- 설명: reply.hpp
- 원본: boost_asio/example/cpp03/http/server4/request.hpp
- 설명: request.hpp
- 원본: boost_asio/example/cpp03/http/server4/request_parser.cpp
- 설명: request_parser.cpp
- 원본: boost_asio/example/cpp03/http/server4/request_parser.hpp
- 설명: request_parser.hpp
- 원본: boost_asio/example/cpp03/http/server4/server.cpp
- 설명: server.cpp
- 원본: boost_asio/example/cpp03/http/server4/server.hpp
- 설명: server.hpp
ICMP
이 예제는 원격 호스트로 ping을 하기 위해서 ICMP와 함께 로우(raw) 소켓을 사용하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/icmp/ping.cpp
- 설명: ping.cpp
- 원본: boost_asio/example/cpp03/icmp/ipv4_header.cpp
- 설명: ipv4_header.cpp
- 원본: boost_asio/example/cpp03/icmp/icmp_header.cpp
- 설명: icmp_header.cpp
호출 (Invocation)
이 예제는 핸들러 호출을 사용자 정의하는 방법을 보여준다. 완료 핸들러는 즉시 실행되지 않고 우선순위 대기열(queue)에 추가된다.
- 원본: boost_asio/example/cpp03/invocation/prioritised_handlers.cpp
- 설명: prioritised_handlers.cpp
Iostreams
두 가지 예제는 ip::tcp::iostream을 사용하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/iostream/daytime_client.cpp
- 설명: daytime_client.cpp
- 원본: boost_asio/example/cpp03/iostream/daytime_server.cpp
- 설명: daytime_server.cpp
- 원본: boost_asio/example/cpp03/iostream/http_client.cpp
- 설명: http_client.cpp
멀티캐스트 (Multicast)
멀티캐스트를 사용하여 가입자의 그룹에 패킷을 전송하는 예제를 보여준다.
- 원본: boost_asio/example/cpp03/multicast/receiver.cpp
- 설명: receiver.cpp
- 원본: boost_asio/example/cpp03/multicast/sender.cpp
- 설명: sender.cpp
직렬화 (Serialization)
이 예제는 Boost.Serialization으로 소켓을 통해 전송하는 인코딩/디코딩 구조를 asio와 함께 사용할 수 있는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/serialization/client.cpp
- 설명: client.cpp
- 원본: boost_asio/example/cpp03/serialization/connection.cpp
- 설명: connection.cpp
- 원본: boost_asio/example/cpp03/serialization/server.cpp
- 설명: server.cpp
- 원본: boost_asio/example/cpp03/serialization/stock.cpp
- 설명: stock.cpp
서비스 (Services)
이 예제는 asio의 io_context에 사용자 정의 기능(이 경우 로깅에 대한)을 통합하는 방법과 basic_stream_socket<>로 사용자 정의 서비스를 사용하는 방법을 보여준다.
- 원본: boost_asio/example/cpp03/services/basic_logger.hpp
- 설명: basic_logger.hpp
- 원본: boost_asio/example/cpp03/services/daytime_client.cpp
- 설명: daytime_client.cpp
- 원본: boost_asio/example/cpp03/services/logger.hpp
- 설명: logger.hpp
- 원본: boost_asio/example/cpp03/services/logger_service.cpp
- 설명: logger_service.cpp
- 원본: boost_asio/example/cpp03/services/logger_service.hpp
- 설명: logger_service.hpp
- 원본: boost_asio/example/cpp03/services/stream_socket_service.hpp (파일 없음)
- 설명: stream_socket_service.hpp
SOCKS 4
프록시를 통한 통신을 SOCKS 4 프로토콜로 구현하는 클라이언트 프로그램 예제이다.
- 원본: boost_asio/example/cpp03/socks4/sync_client.cpp
- 설명: sync_client.cpp
- 원본: boost_asio/example/cpp03/socks4/socks4.cpp
- 설명: socks4.cpp
SSL
클라이언트와 서버 프로그램 예제는 비동기 연산에서 ssl::stream<> 템플릿의 사용을 보여준다.
- 원본: boost_asio/example/cpp03/ssl/client.cpp
- 설명: client.cpp
- 원본: boost_asio/example/cpp03/ssl/server.cpp
- 설명: server.cpp
타임아웃 (Timeouts)
일정 시간 후 오랜 시간 실행하는 비동기 작업을 취소하는 방법을 보여주는 예제의 모음이다.
- 원본: boost_asio/example/cpp03/timeouts/async_tcp_client.cpp
- 설명: async_tcp_client.cpp
- 원본: boost_asio/example/cpp03/timeouts/blocking_tcp_client.cpp
- 설명: blocking_tcp_client.cpp
- 원본: boost_asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp
- 설명: blocking_token_tcp_client.cpp
- 원본: boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp
- 설명: blocking_udp_client.cpp
- 원본: boost_asio/example/cpp03/timeouts/server.cpp
- 설명: server.cpp
타이머 (Timers)
다른 클럭 유형을 사용하여 basic_waitable_timer를 사용자 정의하는 방법을 보여주는 예제이다.
- 원본: boost_asio/example/cpp03/timers/time_t_timer.cpp
- 설명: time_t_timer.cpp
Porthopper
동기/비동기 작업이 혼합되고 Boost.Asio와 함께 boost.Lambda를 사용하는 방법을 보여주는 예제이다.
- 원본: boost_asio/example/cpp03/porthopper/protocol.hpp
- 설명: protocol.hpp
- 원본: boost_asio/example/cpp03/porthopper/client.cpp
- 설명: client.cpp
- 원본: boost_asio/example/cpp03/porthopper/server.cpp
- 설명: server.cpp
넌블럭킹 (Nonblocking)
I/O 작업 자체를 수행하기 원하는 타사(third-party) 라이브러리를 통합하기 위한 리액터(reactor) 스타일 작업을 보여주는 예제이다.
- 원본: boost_asio/example/cpp03/nonblocking/third_party_lib.cpp
- 설명: third_party_lib.cpp
Spawn
스택형 코-루틴을 사용하여 비동기 작업의 체인을 구현하기 위해 Boost.Coroutine 라이브러리를 감싸는 래퍼인 boost::asio::spawn() 함수를 사용하는 예제이다.
- 원본: boost_asio/example/cpp03/spawn/echo_server.cpp
- 설명: echo_server.cpp
유닉스 도메인 소켓 (UNIX Domain Sockets)
유닉스 도메인 소켓의 사용법을 보여주는 예제이다.
- 원본: boost_asio/example/cpp03/local/connect_pair.cpp
- 설명: connect_pair.cpp
- 원본: boost_asio/example/cpp03/local/iostream_client.cpp
- 설명: iostream_client.cpp
- 원본: boost_asio/example/cpp03/local/stream_server.cpp
- 설명: stream_server.cpp
- 원본: boost_asio/example/cpp03/local/stream_client.cpp
- 설명: stream_client.cpp
Windows
Boost.Asio와 함께 Windows 지정 함수 TransmitFile을 사용하는 방법을 보여주는 예제이다.
- 원본: boost_asio/example/cpp03/windows/transmit.cpp
- 설명: transmit.cpp
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 예제 - C++14 예제 (0) | 2020.12.19 |
---|---|
Boost.Asio 예제 - C++11 예제 (0) | 2020.12.18 |
Boost.Asio 예제 (0) | 2020.12.17 |
Boost.Asio 튜토리얼 - Daytime.7 소스 (0) | 2020.12.17 |
Boost.Asio 튜토리얼 - Daytime.7 - 결합된 TCP/UDP 비동기식 서버 (0) | 2020.12.17 |