gpt4 book ai didi

c++ - 如何使用 boost asio 正确地将端口随机分配给测试 HTTP 服务器?

转载 作者:太空狗 更新时间:2023-10-29 23:36:16 25 4
gpt4 key购买 nike

我正在使用 boost asio 创建测试服务器来测试 http 客户端。这将与客户端在同一台机器上运行。现在我想做的是创建一个随机分配端口的服务器。我在这里看过这个帖子:Using boost::asio is there a portable way to find out free port number但坦率地说,我还是有点困惑。

我的代码看起来像这样:

boost::asio::io_service service;
tcp::acceptor acceptor(service);
unsigned short port(0);
tcp::endpoint endPoint(tcp::endpoint(tcp::v4(), port);
acceptor.open(endPoint.protocol());
acceptor.set_option(tcp::acceptor::reuse_address(true));
acceptor.bind(endPoint);
port = endPoint.port();

std::cout<<port<<std::endl; // prints 0

我的想法是,通过创建一个带有“端口 0”的端点,然后尝试绑定(bind)到该端口,它应该会导致随机分配一个可用端口,但事实似乎并非如此。知道我做错了什么吗?

干杯。

最佳答案

boost::asio::io_service service;
boost::asio::ip::tcp::acceptor acceptor(service);
unsigned short port(0);
boost::asio::ip::tcp::endpoint endPoint(tcp::endpoint(tcp::v4(), port);
acceptor.open(endPoint.protocol());
acceptor.set_option(tcp::acceptor::reuse_address(true));
acceptor.bind(endPoint);

m_acceptor.listen();

boost::asio::ip::tcp::endpoint le = acceptor.local_endpoint(); //THIS LINE SOLVES IT
port = le.port();

// port = endPoint.port(); // This is didn't work for me

Helpful answer Similar question

关于c++ - 如何使用 boost asio 正确地将端口随机分配给测试 HTTP 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183174/

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