如何使用 Poco::Net::HTTPSClientSession 绑定特定源 IP 地址

How to bind specific source IP address using Poco::Net::HTTPSClientSession

我有一个 https 客户端,可以 运行 在两个冗余主机之一上。希望作为 'Active' 客户端主机的主机使用特定 IP 地址作为源地址,以便流量似乎来自同一个源。允许这一切的低级别 OS 网络设置都已到位。我们的 https 客户端是使用 Poco::Net::HTTPSClientSession class.

构建的

从阅读到这种情况,将共享源 IP 地址绑定到客户端套接字是标准解决方案。尝试了以下代码:

// set the shared IP address and use 0 (represents wildcard) for port
Poco::Net::SocketAddress sa = Poco::Net::SocketAddress(ipAddress, 0);

// bind the shared IP address to the socket
Poco::Net::SecureStreamSocket sss;
sss.impl()->bind(sa);

Poco::Net::HTTPSClientSession session(sss);

不幸的是,这不起作用,因为 bind() 抛出 Poco::InvalidAccessException 并且异常消息是 "Cannot bind() a SecureStreamSocketImpl"。查看 Poco 源代码,bind() 只是抛出此异常。好像不允许。

如何与 Poco::Net::HTTPSClientSession class 一起使用?

是否有可能让它与这个class一起工作?

目前不可能 - 有一个 pending issue。最终会完成,但目前没有时间表。