Boost.Asioによる同期接続処理
提供: C++入門
スポンサーリンク
ネットワークプログラミング向けのC++ライブラリ Boost.Asio を利用して、同期の接続処理を書いてみました。
読み方
- Boost.Asio
- ぶーすと えいじお
概要
BSDソケットを直接扱うよりも、簡単に書くことができます。クロスプラットフォームなので、OSごとの違いを考えなくてよくなります。WinSockとBSDソケットなどを意識しなくて良いです。
ソースコード
IPアドレスやポート番号は適当に変更してください。
このプログラムは、指定されたIPアドレス:ポート番号にTCPで接続するだけのプログラムです。接続の成功・失敗に関わらず、終了します。
/* * boost_asio_connect1.cpp * Copyright (C) 2015 kaoru <kaoru@localhost> */ #include <iostream> #include <boost/asio.hpp> using boost::asio::ip::tcp; int main(int argc, char const* argv[]) { boost::asio::io_service io_service; tcp::socket tcp_socket(io_service); boost::system::error_code error; std::string addr = "127.0.0.1"; int port = 8080; tcp_socket.connect( tcp::endpoint( boost::asio::ip::address::from_string(addr), port), error); if (error) { std::cout << "cannot connect: " << error.message() << std::endl; } else { std::cout << "connected " << std::endl; } return 0; }
コンパイル
c++ -I/usr/local/include boost_asio_connect1.cpp -L /usr/local/lib -lboost_system
実行例
$ ./a.out connected
サーバプログラムを用意する
接続テスト用にTCPの接続待ちのプロセスが必要になります。すでに、あるプロセスを利用しても良いですし、ここで書いたように、プログラムを実行しても構いません。
たとえば、PHPでサーバを上げることもできます。
php -S 0.0.0.0:8080
ncatを使用して、バックドアのようなプログラムを起動することもできます。
ncat -l -p 8080 -e /bin/sh -k
関連項目
ツイート
スポンサーリンク