「Boost.Asioによる同期接続処理」の版間の差分
提供: C++入門
(ページの作成:「ネットワークプログラミング向けのC++ライブラリ Boost.Asio を利用して、同期の接続処理を書いてみました。 '''読み方''' ;B...」) |
|||
行8: | 行8: | ||
BSDソケットを直接扱うよりも、簡単に書くことができます。クロスプラットフォームなので、OSごとの違いを考えなくてよくなります。WinSockとBSDソケットなどを意識しなくて良いです。 | BSDソケットを直接扱うよりも、簡単に書くことができます。クロスプラットフォームなので、OSごとの違いを考えなくてよくなります。WinSockとBSDソケットなどを意識しなくて良いです。 | ||
== ソースコード == | == ソースコード == | ||
+ | IPアドレスやポート番号は適当に変更してください。 | ||
+ | |||
+ | このプログラムは、指定されたIPアドレス:ポート番号にTCPで接続するだけのプログラムです。接続の成功・失敗に関わらず、終了します。 | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
/* | /* | ||
行49: | 行52: | ||
$ ./a.out | $ ./a.out | ||
connected | connected | ||
+ | </syntaxhighlight> | ||
+ | == サーバプログラムを用意する == | ||
+ | 接続テスト用にTCPの接続待ちのプロセスが必要になります。すでに、あるプロセスを利用しても良いですし、ここで書いたように、プログラムを実行しても構いません。 | ||
+ | |||
+ | たとえば、PHPでサーバを上げることもできます。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | php -S 0.0.0.0:8080 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ncatを使用して、バックドアのようなプログラムを起動することもできます。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | ncat -l -p 8080 -e /bin/sh -k | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == |
2015年7月25日 (土) 11:04時点における最新版
ネットワークプログラミング向けの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