我有一个可以在两个冗余主机之一上运行的https客户端。希望主持人是“活跃的”主持人。客户端主机使用特定的IP地址作为源地址,以便流量看起来来自一个源。低级操作系统网络设置允许这一切都到位。我们的https客户端是使用Poco :: Net :: HTTPSClientSession类构建的。
从阅读这种情况来看,将共享源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而异常消息是"无法绑定()一个SecureStreamSocketImpl"。看看Poco源代码,bind()就是抛出这个异常。似乎是不被允许的。
如何使用Poco :: Net :: HTTPSClientSession类进行此操作?
甚至可以使它适用于这个类吗?