如何解决QTcpSocket,等待服务器
| 我在fedora中使用QTcpserver和QTcpsocket制作了简单的客户端服务器程序,而没有使用线程。我想使我的应用程序独立于先运行的顺序,客户端还是服务器的顺序。当我先启动服务器时,我的应用程序运行良好,但是当服务器未启动并连接时,我没有任何办法让客户端等待与充当服务器启动。我使用了waitForConnection(),但没有帮助。 请给一些建议。TcpClient::TcpClient(QWidget *parent) : QMainWindow(parent),ui(new Ui::TcpClient)
{
ui->setupUi(this);
tcpsocket= new QTcpsocket(this);
tcpsocket->connectToHost(QHostAddress::LocalHost,6178);
connect(tcpsocket,SIGNAL(connected()),this,SLOT(sendRequest()));
connect(tcpsocket,SIGNAL(disconnected()),SLOT(connectionClosedByServer()));
connect(tcpsocket,SIGNAL(error(QAbstractSocket::SocketError)),SLOT(error()));
.
.
..
}
void TcpClient::error()
{
ui->lStatus->setText(tcpsocket->errorString());
closeConnection();
tcpsocket->connectToHost(QHostAddress::LocalHost,6178);
}
解决方法
在客户端上,使用
connectToHost()
。聆听hostFound()
或connected()
获得成功,并聆听error()
获得失败。如果出现故障,请尝试重新连接(也许在1到10秒后,使用QTimer::singleShot()
。)
这将使您的应用程序的其余部分在尝试进行连接时保持运行。
,没有Qt :: QueuedConnection连接选项,从连接到error()的插槽中简单地调用connectToHost对我不起作用。连接丢失后,请参阅Jonas Mauricio Gastal QTcpSocket的重新连接,连接丢失后将停留在ConnectingState中。
对不起我的英语不好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。