微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QTcpSocket,等待服务器

如何解决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 举报,一经查实,本站将立刻删除。