boost::asio離脱boost独立コンパイル(windows)
2036 ワード
boost.asioの強力なオープンソース非同期ネットワークライブラリは、c++11の誕生に伴い、boostへのコードの依存が徐々に減少しています.boostの依存ライブラリが膨大すぎるため、boostの多くの優れたモジュールは
スマートポインタ、auto、bind、スマートロック、スレッドなど、c++11に追加されました.
くだらないことは言わないで、asioの公式サイトはすでにboostから独立してコンパイルすることができることを説明して、しかし簡単にlinuxの下の離脱コンパイルを紹介して、以下は本題に入ります:
スマートポインタ、auto、bind、スマートロック、スレッドなど、c++11に追加されました.
くだらないことは言わないで、asioの公式サイトはすでにboostから独立してコンパイルすることができることを説明して、しかし簡単にlinuxの下の離脱コンパイルを紹介して、以下は本題に入ります:
//1. "c++/ / "
_WIN32_WINNT 0x0A00 // WIN10
ASIO_STANDALONE // asio
//2. " / "
//3. asio ,
demo (demo )
#include "stdafx.h"
#include "asio.hpp"
#include
using namespace std;
using namespace asio;
using asio::ip::tcp;
#include
class myasio
{
public:
myasio()
:m_acc(m_iosvr, tcp::endpoint(tcp::v4(), 1986))
{
}
~myasio()
{
}
public:
int start()
{
std::shared_ptr<:socket> psock(new tcp::socket(m_iosvr));
m_acc.async_accept(*psock, [&](asio::error_code err) {
if (err)
{
return;
}
start();
std::cout << psock->remote_endpoint().address() << std::endl;
time_t now = time(0);
std::string msg = ctime(&now);
asio::error_code igerr;
psock->write_some(asio::buffer(msg), igerr);
});
m_iosvr.run();
return 0;
}
protected:
void accept_handler(std::shared_ptr<:socket> ps, asio::error_code err)
{
if (err)
{
return;
}
start();
std::cout << ps->remote_endpoint().address() << std::endl;
time_t now = time(0);
std::string msg = ctime(&now);
asio::error_code igerr;
ps->write_some(asio::buffer(msg), igerr);
}
private:
io_service m_iosvr;
tcp::acceptor m_acc;
};
int main()
{
myasio asio;
asio.start();
return 0;
}
vs 2010とvs 2017でコンパイルに ( のテストdemoはvs 2017でコンパイル)