Closed arisin closed 10 years ago
サンプル、recieverとsenderではUDP/IPを扱う為にBoostライブラリーの一部のASIOという機能を使っています。
UDP/IPを扱う仕組みはOSによって異なりますが、Boostライブラリーがライブラリー内部でその差異を吸収してくれる事で、同じコードをOSX、Windows、GNU/Linuxなど多数のプラットフォームで扱えて便利なので今回はBoostのASIOを使っています。
boost::asio::io_service service;
これはboost::asio::io_service
型のservice
を使う為に定義しています。boost::asio::io_service型はBoostのASIO機能の入手力(IO)を管理するための型だと思ってくれれば差し当たりはそれで構いません。
udp::socket socket(service, udp::endpoint(udp::v4(), port));
先ず、udp::socket
は、それより少し前でusing boost::asio::ip::udp;
を行っていますので、本来ならばboost::asio::ip::udp::socket
とフルに名前空間を書かなければならないものを、いくらなんでも長ったらしい過ぎるのでusingでboost::asio::ip::udpをudpとして使えるようにしています。
一部省略した表記でのudp::socket
型(=boost::asio::ip::udp::socket
型)のオブジェクトをsocket
というシンボル名で定義をしているのがこの部分です。
定義の際にsocket(service, udp::endpoint(udp::v4(), port))
としてudp::socket
型のコンストラクターを呼び出しています。service
は先に定義していたboost::asio::io_service
のオブジェクト、 udp::endpoint(udp::v4(), port)
は「エンドポイント(IP通信の基点)として、IPv4で、ポート番号portとして」という事を定義しています。サンプルのportはデフォルトだと、だいぶ前の方でconstexpr auto default_port = 30000;
として30000になるようにしてあります。
参考 // いまはまだ、このBoostのドキュメントや中身をみてもなんやらわからんかも。とりあえずはサンプルみて使うことができれば良いです。実際この中身はむずかしいので。
つまり、
この2行は通信をつすための準備、ということでしょうか?
そういう事です。
その後のwhile(true)
ループで、
これを繰り返します。この部分でも何かあればまた個別にどうぞ。
閉じます。
boost::asio::io_service service; udp::socket socket(service, udp::endpoint(udp::v4(), port));
この2行は通信をつすための準備、ということでしょうか? よろしくお願いします。