如何使用 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。最终会完成,但目前没有时间表。
我有一个 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。最终会完成,但目前没有时间表。