C로 된 기존 서버프로그램을 BOOST를 이용한 C++로 옮기고 있습니다.
기존 시스템이 socket과 fifo등을 select와 FD_ISSET으로 읽어왔었는데요
BOOST에서 timed_recv가 같은 역할을 할 수 있을까요?
레퍼런스 읽어봐도 정확히 매칭되는지 감이 안와 질문올립니다.
소켓 라이브러리를 찾으시는 건가요?
boost 라이브러리는 추상화 수준이 높아서
select, epoll 수준의 fd를 조작하는 api(wrapper)는 없을 것 같네요.
대신 boost asio에서 select나 epoll에 대한 추상화된 인터페이스로 io_service와 async_* 인터페이스를 제공합니다.
http://www.boost.org/doc/libs/release/doc/html/boost_asio.html
—— ——— Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -
답변감사드립니다. 하나 더 질문드리면 socket뿐만 아니라 실제 BOOST를 사용한 IPC 를 구현할때도 asio를 사용하는지 궁금합니다. boost::interprocess 가 있지만 기존 C소스로 구현된 fd_set을 이용한 select로 fifo를 catch해내던 방법과 많이 달라보여서요
UNIX Domain Sockets이 fifo 맞나요?
asio 문서에서
Overview - POSIX-Specific Functionality - UNIX Domain Sockets
여기에 UNIX Domain Sockets에 대한 설명이 나와있습니다.
http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/overview/posix/local.html
서버 사용 예
::unlink("/tmp/foobar"); // Remove previous binding. local::stream_protocol::endpoint ep("/tmp/foobar"); local::stream_protocol::acceptor acceptor(my_io_service, ep); local::stream_protocol::socket socket(my_io_service); acceptor.accept(socket);
클라이언트 사용 예
local::stream_protocol::endpoint ep("/tmp/foobar"); local::stream_protocol::socket socket(my_io_service); socket.connect(ep);
이렇게 endpoint를 만들때 path("/tmp/foobar")를 넣어줘서 소켓 바인딩(?)하여 사용 합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
소켓 라이브러리를 찾으시는 건가요? boost
소켓 라이브러리를 찾으시는 건가요?
boost 라이브러리는 추상화 수준이 높아서
select, epoll 수준의 fd를 조작하는 api(wrapper)는 없을 것 같네요.
대신 boost asio에서 select나 epoll에 대한 추상화된 인터페이스로 io_service와 async_* 인터페이스를 제공합니다.
http://www.boost.org/doc/libs/release/doc/html/boost_asio.html
——
———
Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -
감사합니다. 실제 BOOST를 사용한 IPC 를 구현할때.
답변감사드립니다.
하나 더 질문드리면
socket뿐만 아니라
실제 BOOST를 사용한 IPC 를 구현할때도 asio를 사용하는지 궁금합니다.
boost::interprocess 가 있지만 기존 C소스로 구현된 fd_set을 이용한 select로 fifo를 catch해내던 방법과 많이 달라보여서요
UNIX Domain Sockets이 fifo 맞나요?
UNIX Domain Sockets이 fifo 맞나요?
asio 문서에서
Overview - POSIX-Specific Functionality - UNIX Domain Sockets
여기에 UNIX Domain Sockets에 대한 설명이 나와있습니다.
http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/overview/posix/local.html
서버 사용 예
클라이언트 사용 예
이렇게 endpoint를 만들때 path("/tmp/foobar")를 넣어줘서 소켓 바인딩(?)하여 사용 합니다.
——
———
Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -
댓글 달기