• 3614阅读
  • 0回复

[提问]QTcpSocket+wifi 连接问题,请高手指教 [复制链接]

上一主题 下一主题
离线留心屿
 

只看楼主 倒序阅读 楼主  发表于: 2015-08-10

最近做一个项目用wifi连接服务器,我做的tcp客户端,用的是wpa_supplicant。
关闭wifi开关,此时客户端没有连服务器,服务器重启后再打开wifi开关,可以连上服务器。

打开wifi开关,连上服务器,这时服务器重启,就怎么也连不上了,此时打印QTcpSocket状态一直是ConnectingState。
主要部分代码如下:

    ptcpsocket_ = new QTcpSocket(this);
    connect(ptcpsocket_, SIGNAL(readyRead()), SLOT(NewDataRecieved()));
    connect(ptcpsocket_, SIGNAL(connected()), SLOT(ClientConnected()));
    connect(ptcpsocket_, SIGNAL(disconnected()), SLOT(ConnectionClosedByServer()));
    connect(ptcpsocket_, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(NetWorkErrorRecieved(QAbstractSocket::SocketError)));


void NetworkOperation::ConnectionClosedByServer(void)
{
        qDebug()<<"DisconnectWithServer";
         ptcpsocket_->abort();//close();
        connected_flag_ = false;
        SystemConfig::Instance()->Systemsetting()->SetServerState(false);
        PostConnectEvent(false);
}
GUI在收到PostConnectEvent发出的事件后再启用定时器连服务器,执行以下函数

int NetworkOperation::ConnectToServer(const QString &server_ip, int port)
{
    if(UnConnectedServer())
    {
        qDebug()<<"00";
        ptcpsocket_->connectToHost(server_ip, port);
        return 0;
    }
    else if(ConnectedServer())
    {
        qDebug()<<"22";
        return 2;
    }
    else
    {
        qDebug()<<"11"<<ptcpsocket_->state();
        return 1;
    }
}
打印出的结果一直是11 ConnectingState,而且error信号连接的槽函数也无打印信息,不思不得其解
快速回复
限100 字节
 
上一个 下一个