如何使用boost asio将端口正确随机分配给测试HTTP服务器
How do I correctly randomly assign a port to a test HTTP server using boost asio?
我正在使用boost asio创建一个测试服务器来测试http客户端。这将与客户端在同一台计算机上运行。现在我想做的是创建一个带有随机分配端口的服务器。我在这里看到了这个线程:使用boost::asio有一种便携式的方法可以找到空闲端口号,但坦率地说,我仍然有点困惑。
我的代码看起来像这样:
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"的端点,然后尝试绑定到该端口,应该会随机分配一个可用端口,但事实并非如此。知道我做错了什么吗?
干杯。
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
有用的答案类似问题
您可以通过为受体使用不同的构造函数来缩短此过程:
using boost::asio;
io_service service;
ip::tcp::acceptor acceptor(service, ip::tcp::endpoint(ip::tcp::v4(), 0));
unsigned short port = acceptor.local_endpoint().port();
此构造函数在接收器上调用open()、bind()和listen()。
已修复。我需要做:
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);
m_acceptor.listen(); // NEEDED TO ADD THIS BIT!
port = endPoint.port();
std::cout<<port<<std::endl; // prints 0
相关文章:
- 将数组的地址分配给变量并删除
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- vector.resize()中的分配错误
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 在标准输出中执行打印会导致数组中随机分配值
- 动态分配存储数据在堆中的随机位置中
- 动态分配和随机访问:Raw、Smart、Deque、Vector.为什么生得这么快,而deque却这么慢
- 如何在 matr 内按一定百分比随机分配数字
- 防止随机整数不断被重新分配
- 如何创建随机内存分配失败
- 为连接的OMNeT++门分配随机选择但匹配的参数
- 动态分配随机特征向量Xd
- 关于在omnetpp.ini中将两个不同的应用程序随机分配到50个节点
- C++ 随机将枚举类型分配给变量
- 如何使用boost asio将端口正确随机分配给测试HTTP服务器
- 为数据成员分配一个新的随机方向,该方向不同于 c++ 中的当前方向
- 使用引用运算符 (&) 为矩阵分配随机值
- 如何为c++类的多个实例分配随机优先级
- Qt MySQL 适配器拒绝随机连接:无法分配 MYSQL
- 我应该使用哪个容器进行随机访问,廉价的添加和删除(没有取消/分配),具有已知的最大大小