@@ -54,23 +54,27 @@ CBackendSSH::OnInitReturnValue CBackendSSH::OnInit()
5454 Q_ASSERT (check);
5555 check = connect (m_pChannelSSH, &CChannelSSHTerminal::readyRead,
5656 this , [&](){
57- QByteArray data ( 256 , ' \0 ' ) ;
58- int nLen = 0 ;
59- if (m_pChannelSSH)
60- nLen = m_pChannelSSH-> read (data. data (), data. length ());
61- if (m_pTerminal && nLen > 0 ) {
62- # if defined(Q_OS_WIN)
63- if (m_pOperate) {
64- emit m_pOperate-> sigReceiveData (data) ;
57+ char * buf = nullptr ;
58+ qint64 nLen = 0 ;
59+ qint64 nRet = 0 ;
60+ if (m_pChannelSSH) {
61+ nLen = m_pChannelSSH-> bytesAvailable ();
62+ if (nLen <= 0 ) {
63+ qDebug (log) << " No data " ;
64+ return ;
6565 }
66- #else
67- write (m_pTerminal->getPtySlaveFd (), data.data (), data.length ());
68- #endif
66+ buf = new char [nLen];
67+ nRet = m_pChannelSSH->read (buf, nLen);
6968 }
70- else
71- qCritical (log) << " The m_pTerminal is nullptr or nLen <= 0" ;
72- qDebug (log) << " Write data to QTermWidget: " << nLen;
73-
69+ if (m_pTerminal && nRet > 0 ) {
70+ QByteArray data (buf, nRet);
71+ if (m_pOperate)
72+ emit m_pOperate->sigReceiveData (data);
73+ } else
74+ qCritical (log) << " The m_pTerminal is nullptr or nRet <= 0" ;
75+ // qDebug(log) << "Write data to QTermWidget: " << nRet << nLen;
76+ if (buf)
77+ delete [] buf;
7478 });
7579 Q_ASSERT (check);
7680 check = connect (m_pTerminal, &QTermWidget::sendData,
@@ -122,9 +126,10 @@ bool CBackendSSH::event(QEvent *event)
122126 QEventTerminal *d = (QEventTerminal*)event;
123127 if (m_pChannelSSH && d->m_Data .length () > 0 ) {
124128 qint64 nRet = m_pChannelSSH->write (d->m_Data .data (), d->m_Data .length ());
125- qDebug (log) << " Write data to ssh channel:" << nRet << d->m_Data .length ();
129+ Q_UNUSED (nRet);
130+ // qDebug(log) << "Write data to ssh channel:" << nRet << d->m_Data.length();
126131 } else {
127- qCritical (log) << " m_pChannelSSH && len <= 0" ;
132+ // qDebug (log) << "m_pChannelSSH && len <= 0";
128133 }
129134 break ;
130135 }
0 commit comments