Skip to content

重启服务端后,客户端显示重连成功,但是服务端并未显示有客户端连上来。 #93

Description

@zwny520

客户端代码:

#include "handy/ssl-conn.h"

int main(int argc, const char* argv[]) {
using namespace handy;
Logger::getLogger().setLogLevel(Logger::LTRACE);
EventBase ebase;
Signal::signal(SIGINT, [&]{ ebase.exit(); });
SSLConn::setSSLCertKey("server.pem", "server.pem");
TcpServer ss(&ebase);
int r = ss.bind("0.0.0.0", 1002);
exitif(r, "bind failed %d %s", errno, strerror(errno));
ss.onConnCreate([]{ return TcpConnPtr(new SSLConn); });
ss.onConnRead([](const TcpConnPtr& con) {
con->send(con->getInput());
con->getInput().clear();
});
ebase.loop();
return 0;
}

服务端代码:

#include "handy/ssl-conn.h"

int main(int argc, const char* argv[]) {
Logger::getLogger().setLogLevel(Logger::LTRACE);
EventBase ebase;
Signal::signal(SIGINT, [&]{ ebase.exit(); });
SSLConn::setSSLCertKey("server.pem", "server.pem");
TcpServer ss(&ebase);
int r = ss.bind("0.0.0.0", 1002);
exitif(r, "bind failed %d %s", errno, strerror(errno));
ss.onConnCreate([]{ return TcpConnPtr(new SSLConn); });
ss.onConnRead([](const TcpConnPtr& con) {
con->send(con->getInput());
con->getInput().clear();
});

TcpServer ts(&ebase);
r = ts.bind("0.0.0.0", 1003);
exitif(r, "bind failed %d %s", errno, strerror(errno));
ts.onConnRead([](const TcpConnPtr& con) {
    con->send(con->getInput());
    con->getInput().clear();
});
ebase.loop();
return 0;

}

问题大致的原因是服务端关掉重启后,服务端的SSlconn已经重新new了,但是客户端的sslconn还是原来的,客户重连上来虽然显示成功了,但并没有重新握手。也就导致服务端收不到有连接进来的消息。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions