There is a following code:
{
Q_OBJECT
public:
private slots:
void processReadyRead();
};
class Connection : public QTcpSocket
{
Q_OBJECT
public:
Connection(QObject *parent = 0);
private slots:
void processReadyRead();
};
To copy to clipboard, switch view to plain text mode
Connection
::Connection(QObject *parent
){
QObject::connect(this,
SIGNAL(readyRead
()),
this,
SLOT(processReadyRead
()));
}
Connection::Connection(QObject *parent)
: QTcpSocket(parent)
{
QObject::connect(this, SIGNAL(readyRead()), this, SLOT(processReadyRead()));
}
To copy to clipboard, switch view to plain text mode
void Connection::processReadyRead()
{
char *szData = 0;
if( this->isReadable())
{
qint64 qnSize = this->bytesAvailable();
if( qnSize > 0)
{
szData = new char [qnSize];
qint64 qnReadSize = this->read( szData, qnSize);
szData[qnReadSize]=0;
}
}
Ui_HSMClass *pHSMClass = CProjectManager::GetPrjMng()->m_pHSMClass;
if(pHSMClass != NULL)
{
pHSMClass->addMSG(szData);
}
this->disconnectFromHost();
this->waitForDisconnected();
}
void Connection::processReadyRead()
{
char *szData = 0;
if( this->isReadable())
{
qint64 qnSize = this->bytesAvailable();
if( qnSize > 0)
{
szData = new char [qnSize];
qint64 qnReadSize = this->read( szData, qnSize);
szData[qnReadSize]=0;
}
}
Ui_HSMClass *pHSMClass = CProjectManager::GetPrjMng()->m_pHSMClass;
if(pHSMClass != NULL)
{
pHSMClass->addMSG(szData);
}
this->disconnectFromHost();
this->waitForDisconnected();
}
To copy to clipboard, switch view to plain text mode
class FortuneThread
: public QThread{
Q_OBJECT
public:
FortuneThread
(int socketDescriptor,
QObject *parent
);
void run();
signals:
private:
int socketDescriptor;
};
class FortuneThread : public QThread
{
Q_OBJECT
public:
FortuneThread(int socketDescriptor,QObject *parent);
void run();
signals:
void error(QTcpSocket::SocketError socketError);
private:
int socketDescriptor;
};
To copy to clipboard, switch view to plain text mode
FortuneThread
::FortuneThread(int socketDescriptor,
QObject *parent
) : QThread(parent
), socketDescriptor
(socketDescriptor
) {
}
void FortuneThread::run()
{
Connection *connection = new Connection(this);
connection->setSocketDescriptor(socketDescriptor);
}
FortuneThread::FortuneThread(int socketDescriptor,QObject *parent)
: QThread(parent), socketDescriptor(socketDescriptor)
{
}
void FortuneThread::run()
{
Connection *connection = new Connection(this);
connection->setSocketDescriptor(socketDescriptor);
}
To copy to clipboard, switch view to plain text mode
{
Q_OBJECT
public:
signals:
void newConnection(Connection *connection);
protected:
void incomingConnection(int socketDescriptor);
};
class Server : public QTcpServer
{
Q_OBJECT
public:
Server(QObject *parent = 0);
signals:
void newConnection(Connection *connection);
protected:
void incomingConnection(int socketDescriptor);
};
To copy to clipboard, switch view to plain text mode
{
return;
}
}
void Server::incomingConnection(int socketDescriptor)
{
FortuneThread *thread = new FortuneThread(socketDescriptor,this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
Server::Server(QObject *parent)
: QTcpServer(parent)
{
if (!listen(QHostAddress::Any,1718)) {
return;
}
}
void Server::incomingConnection(int socketDescriptor)
{
FortuneThread *thread = new FortuneThread(socketDescriptor,this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
To copy to clipboard, switch view to plain text mode
{
Q_OBJECT
public:
CProjectManager *m_pPrj;
HSM
(QWidget *parent
= 0, Qt
::WFlags flags
= 0);
~HSM();
private:
Ui_HSMClass ui;
Server server;
private slots:
void on_pushButton_clicked();
};
class HSM : public QDialog
{
Q_OBJECT
public:
CProjectManager *m_pPrj;
HSM(QWidget *parent = 0, Qt::WFlags flags = 0);
~HSM();
private:
Ui_HSMClass ui;
Server server;
private slots:
void on_pushButton_clicked();
};
To copy to clipboard, switch view to plain text mode
The client connect to a server, but function processReadyRead() does not work ..Why ???
can help me ???
Bookmarks