【发布时间】:2018-11-30 08:38:23
【问题描述】:
我有一个问题,然后我正在尝试使用代理中的 Poco 重新连接服务器。在连接会话结束时,我从服务器收到 FIN、ACK 包。然后 TCP 向应答服务器发送关于接收其 FIN 的 ACK。所以我有半开连接。我的套接字已关闭以读取但不能发送。等待几秒钟后,我发送http请求,
auto& requestStream = mSession->sendRequest(request);
Poco::StreamCopier::copyStream(request.stream(), requestStream);
auto& responseStream = mSession->receiveResponse(response);
Poco::StreamCopier::copyStream(responseStream, response.send());
TCP 发送 FIN、ACK 并发送 SYN 以启动另一个连接会话,因此我在 SSL_Read() 上收到异常。
解决这个问题的一种方法是使用关闭来识别套接字的状态
if (SSL_get_shutdown(ssl) & SSL_RECEIVED_SHUTDOWN)
reconnect();
但它不合法,bcs SSL* ssl 是 SecureSocketImpl _impl 的私有字段,也是 ServerSocketImpl 的私有字段。
你遇到过这个问题吗?
【问题讨论】: