gpt4 book ai didi

c++ - Boost.Asio 应用程序在创建接受器对象时抛出异常

转载 作者:行者123 更新时间:2023-11-30 04:16:18 26 4
gpt4 key购买 nike

我正在做一个来自 www.highscore.de 的关于 Boost.Asio 的教程。这是我要运行的示例:

#include <boost/asio.hpp>
#include <string>

boost::asio::io_service io_service;
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 80);
boost::asio::ip::tcp::acceptor acceptor(io_service, endpoint);
boost::asio::ip::tcp::socket sock(io_service);
std::string data = "HTTP/1.1 200 OK\r\nContent-Length: 13\r\n\r\nHello, world!";

void write_handler(const boost::system::error_code &ec, std::size_t bytes_transferred)
{
}

void accept_handler(const boost::system::error_code &ec)
{
if (!ec)
{
boost::asio::async_write(sock, boost::asio::buffer(data), write_handler);
}
}

int main()
{
acceptor.listen();
acceptor.async_accept(sock, accept_handler);
io_service.run();
}

但每次它都会在这一行抛出异常:

boost::asio::ip::tcp::acceptor acceptor(io_service, endpoint);

查看堆栈跟踪,basic_socket_acceptor 中的这一行抛出:

boost::asio::detail::throw_error(ec, "bind");

有人知道为什么吗?

最佳答案

如果您可以捕获异常,您可能会通过调用 what() 方法获得更多信息。如果将所有这些全局变量移动到一个函数中并从那里运行,您会发现这更容易。这样,您可以更轻松地捕获异常。

也就是说,在大多数系统上,您不能以非特权用户身份绑定(bind)到端口 80。试试别的东西,看看你是否有更多的运气。

关于c++ - Boost.Asio 应用程序在创建接受器对象时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17819802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com