QT 防止FTP 上传软件在断连处 Crash

前段时间发现项目中的上传FTP软件有可能会在从服务器申请断连时Crash, 所以加了一个Timer。

由于项目代码行数过大, 此处上传部分代码片段。

    timeoutTimer = new QTimer();
    connect(timeoutTimer, SIGNAL(timeout()), this, SLOT(doTimeout()));
    timeoutTimer->setInterval(4000);
    case QFtp::Closing:
        // The connection is closing down, but it is not yet closed. (The state will be Unconnected when the connection is closed.)
        pMain->debug( "Status(%d) = disconnecting from HOST", type );
        timeoutTimer->start();
        break;
    case QFtp::Unconnected:
        // There is no connection to the host.
        pMain->debug( "Status(%d) = disconnected status", type );
        if ( communicator->isPerforming() ) {
            communicator->abortRequest();   // abort performing command, maybe done(ERROR) should be called later
        }
        timeoutTimer->stop(); //stop timer
        break;
/** 
 *@projectName   BoeB9Project  
 *@author        Hasan 
 **/ 
void FtpHelper::doTimeout()
{
    pMain->debug("debug154545 timeout !!!!!!!");
    pMain->sendProxyMessage("MesUPLOADTimeout", ProxyMessage::Notify);
    timeoutTimer->stop();
}

在此进程发出MesUPLOADTimeout 信息之后, 项目主进程会从代理Proxy中接受此信息并进行处理。

/**
 *@projectName   BoeB9Project
 *@author        Hasan
 **/
void BoeB9QtmCellInlineMain::restartUploader()
{
    QProcess proc;
    QString c = "taskkill /im uploader.exe /f";
    proc.execute(c);
    proc.close();

    info("********info terminate uploader");

    QProcess *proc1 = new QProcess(this);

    proc1->start("cmd.exe", QStringList() <<"/c" << "c:///ORBKwsmcu/bin/start_uploader.bat");


    delete proc1;

    info("********info start uploader again");
}

主进程重启上传软件,从而跳过断连。

转载于:https://www.cnblogs.com/hasan/p/9161750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值