タグ

2011年4月18日のブックマーク (3件)

  • Boost.Asio に苦戦中 - Faith and Brave - C++で遊ぼう

    boost::asio::ip::tcp::iostream の接続エラー内容って Windows では GetLastError() でしかとれないのかな? 接続エラーかどうかの判断は good() と fail() ? 【Client】 #include <iostream> #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif #include <boost/asio.hpp> using namespace std; using namespace boost::asio; using ip::tcp; int main() { io_service io; // 接続(IP, Port) tcp::iostream s("127.0.0.1", "31400"); cout << GetLastError() << end

    Boost.Asio に苦戦中 - Faith and Brave - C++で遊ぼう
    yysaki
    yysaki 2011/04/18
    Boost::asioの接続エラー内容
  • Boost.Asio streambufからstd::stringに変換する - Faith and Brave - C++で遊ぼう

    streambuf::data()で、mutable_bufferまたはconst_bufferがとれるので、それに対してbuffer_castを使用する。 void receive(boost::asio::streambuf& buffer) { const std::string result = boost::asio::buffer_cast<const char*>(buffer.data()); } よくある、streambufをstd::istreamを通じてstd::stringに変換するようなサンプルは、ストリームによって必要なスペースが削られたりと、ストリーム固有の問題で嵌ることがあるので、この方法が素直で簡単です。 サンプル #include <iostream> #include <string> #include <boost/asio.hpp> #includ

    Boost.Asio streambufからstd::stringに変換する - Faith and Brave - C++で遊ぼう
    yysaki
    yysaki 2011/04/18
    mutable_bufferやconst_bufferからstringが取得できる
  • Boost.Asioによる非同期通信 – 堕(惰)プログラマ開発記録

    OAuth関連のコードを最近書いてるはずなのに、 同期通信しか出来ないという俺だったので、 非同期通信について調べながらやってみた。 ゆうと(@yutopp)さんに 「workを作って、io_service::runをスレッドにぶち込めばもうそれだけで非同期」 と教わったのでそれを頼りに色々探してみた。 一応非同期と思われるコードは以下。 #include <iostream> #include <boost/asio.hpp> #include <boost/thread/thread.hpp> #include <boost/bind.hpp> void write_callback(const boost::system::error_code& e, std::size_t size ) { std::cout << "write :" << size << "byte[s

    yysaki
    yysaki 2011/04/18
    「workを作って、io_service::runをスレッドにぶち込めばもうそれだけで非同期」