【发布时间】:2023-05-05 14:26:01
【问题描述】:
我遇到了一个奇怪的问题。例如,当我尝试连接到127.0.0.1:8080 上的离线服务器时,套接字信号会发出“错误”,但当我连接到127.0.0.10:8080 或127.123.4.5:8080 时,信号不会发出错误。有什么问题以及如何捕获连接失败的错误?
代码 1:
remote_server = new Server(nickname, ip, port); connect(remote_server, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(connection_failed(QAbstractSocket::SocketError))); remote_server->establish_connection();
代码 2:
master_socket = std::move( std::unique_ptr<QTcpSocket>(new QTcpSocket(nullptr)) ); connect(master_socket.get(), SIGNAL(error(QAbstractSocket::SocketError)), SIGNAL(error(QAbstractSocket::SocketError))); master_socket->connectToHost(ip.c_str(), port); master_socket->waitForConnected(2000);
【问题讨论】:
-
如果您的服务器在环回接口(即 127.0.0.1/8)上侦听,那么您的两个地址(127.0.0.10、127.123.4.5)都将启动并可用。您能否提供“netstat -nap | grep LISTEN”输出来澄清您的问题?
标签: c++ qt networking