【发布时间】:2014-07-21 14:27:49
【问题描述】:
我正在使用下面的代码打开一个 Boost Asio 接受器。我希望当我打开程序的第二个实例时,新实例将无法绑定到已经使用的端口 8080。不过,我发现实际上从未抛出异常。我怎样才能使程序不会绑定到已经使用的端口?
这是在 Windows 7 机器上运行的。
boost::shared_ptr<asio_ip::tcp::acceptor> acceptor;
try {
acceptor.reset(new asio_ip::tcp::acceptor(io_service, asio_ip::tcp::endpoint(asio_ip::tcp::v4(), 8080)));
}
catch (...) {
acceptor.reset(new asio_ip::tcp::acceptor(io_service, asio_ip::tcp::endpoint(asio_ip::tcp::v4(), 0)));
}
【问题讨论】:
-
如果你明确禁用
reuse_address会发生什么? -
是的!工作。如果您将其作为答案并指定如何操作,我会接受。
-
答案已添加!
标签: c++ windows boost boost-asio