Boost 목록
링크 : http://tingcobell.tistory.com/295
대 부분의 프로그램들은 파일, 네트워크, 시리얼 케이블 또는 콘솔에 상호작용에 의하여 동작하게 됩니다.
링크 : http://tingcobell.tistory.com/295
대 부분의 프로그램들은 파일, 네트워크, 시리얼 케이블 또는 콘솔에 상호작용에 의하여 동작하게 됩니다.
어떠한 경우에는 오랜 시간동안 네트워킹, I/O 동작에 의해 완료가 되기도 합니다.
BOOST::ASIO 라이브러리 또한 C++ 프로그래밍을 이용하여 OS의 제어를 할 수 있습니다.
* Portability ( 이식성 )
* Scalability ( 확장성 )
* Efficiency
* Model concepts from established APIs, such as BSD sockets.
* Ease of use.
* Basis for further abstraction.
boost::asio 해부
boost.asio을 이용하기 위해서는 적어도 하나의 io_service 객체가 존재해야 합니다.
boost::asio 해부
boost.asio는 동기 or 비동기 소켓을 이용하여 동작합니다.
아래의 그림은 동기 시스템에 대한 예제입니다.
boost.asio을 이용하기 위해서는 적어도 하나의 io_service 객체가 존재해야 합니다.
io_service는 OS IO 서비스를 연결해주는 역할을 합니다.
I/O 동작을 수행하기 위해서는 I/O object와 같은 tcp 소켓이 필요로 합니다.
이때 동기로 연결을 수행하게 되면, 다음과 같이 이벤트가 순차적으로 일어나게 됩니다.
1. 프로그램이 초기화 할때 connect 동작이 I/O object을 호출합니다.
2. I/O Object는 io_service에 전송하게 됩니다.
3. io_service는 O/S을 호출하여 연결 동작을 수행하게 됩니다.
4. O/S는 결과를 io_service을 알려주게 됩니다.
5. io_service의 결과를 전송중 어떠한 에러가 발생하면, boost::system::error_code 의 _error 코드를
I/O object에 결과를 전송하게 됩니다.
6. I/O object의 예외처리 boost::system::system_error을 실행하게 됩니다. 만약 동작이 실패하게 되면 초기화 합니다.
boost::asio::io_service io_service;
I/O 동작을 수행하기 위해서는 I/O object와 같은 tcp 소켓이 필요로 합니다.
boost::asio::ip::tcp::socket socket(io_service);
이때 동기로 연결을 수행하게 되면, 다음과 같이 이벤트가 순차적으로 일어나게 됩니다.
1. 프로그램이 초기화 할때 connect 동작이 I/O object을 호출합니다.
socket.connect(server_endpoint);
2. I/O Object는 io_service에 전송하게 됩니다.
3. io_service는 O/S을 호출하여 연결 동작을 수행하게 됩니다.
4. O/S는 결과를 io_service을 알려주게 됩니다.
5. io_service의 결과를 전송중 어떠한 에러가 발생하면, boost::system::error_code 의 _error 코드를
I/O object에 결과를 전송하게 됩니다.
6. I/O object의 예외처리 boost::system::system_error을 실행하게 됩니다. 만약 동작이 실패하게 되면 초기화 합니다.
boost::system::error_code ec; socket.connect(server_endpoint, ec);
비동기 동작을 보여주는 그림 입니다.
1. I/O 객체를 호출하는 connect 동작을 보여주고 있습니다.
socket.async_connect(server_endpoint, your_completion_handler);
여기서 your_completion_handler
is a function or function object with the signature:
void your_completion_handler(const boost::system::error_code& ec);
어떠한 신호에 의해 비동기 동작을 수행하게 됩니다.
2. I/O 객체는 io_service에 정보를 전송하게 됩니다.
3. io_service 신호는 비동기 connect에 연결합니다.
'프로그램언어 > boost' 카테고리의 다른 글
[ boost ] boost.asio.buffer #1 (0) | 2011.05.19 |
---|---|
[ Boost ] boost::asio Part2 (1) | 2011.05.13 |
[ Boost ] boost::bind Part2 (0) | 2011.05.12 |
[ Boost ] Boost::bind #1 (0) | 2011.05.12 |
[ Boost ] Boost::thread #4 (0) | 2011.05.12 |