読者です 読者をやめる 読者になる 読者になる

MacでBoost::Asioを使ってみる


MacにBoostを入れてみて、なんとなくAsioで導入テストをしてみることにした。
ちなみにBoost初心者である。


インストールにはMacPortsを使ったので省略。
用意したサンプルプログラムはserver.cppとclient.cpp。
どこかでみたことがあるかもしれないなどはきっと気のせいじゃないと思われ。

まずはclient.cpp

#include<iostream>
#include<boost/asio.hpp>
using namespace std;
using namespace boost::asio;
using ip::tcp;

int main() {
	io_service io;

	tcp::iostream s("127.0.0.1","31400");

	s << "Hello Asio";
	s.flush();

	return 0;
}

次にserver.cpp

#include<iostream>
#include<string>
#include<boost/asio.hpp>
using namespace std;
using namespace boost::asio;
using ip::tcp;

int main() {

	io_service io;

	tcp::acceptor acc(io, tcp::endpoint(tcp::v4(),31400));

		while(true) {
		tcp::iostream s;
		acc.accept(*s.rdbuf());

		cout << "[connect start]" << endl;

		string line;
		while(getline(s,line)) {
			cout << line << endl;
		}

		cout << "[connect end]" << endl;
		}

	return 0;
}

この二つをコンパイルして実行する。

$ g++ client.cpp -o client -I/opt/local/include /opt/local/lib/libboost_system.a
$ g++ server.cpp -o server -I/opt/local/include /opt/local/lib/libboost_system.a
$ ./server &
[1] 282
$ ./client
[connect start]
Hello Asio
[connect end]

テスト用なので良いプログラムではないし、説明も放棄気味だし、間違っているかもしれないであります。
だって初心者だもの!