先看服务端
#include <QObject>
#include <QTcpServer>
#include <QTcpSocket>
class CTcpServer : public QObject
{
Q_OBJECT
public:
explicit CTcpServer(QObject *parent = 0);
~CTcpServer();
private slots:
void onNewConnection();
void onReadMessage();
private:
void _writeData(QString data);
private:
QTcpServer * m_pTcpServer;
QTcpSocket * m_pTcpSocket;
};
源文件
CTcpServer::CTcpServer(QObject *parent) : QObject(parent)
{
m_pTcpServer = new QTcpServer();
m_pTcpServer->listen(QHostAddress::Any,1122);
connect(m_pTcpServer,&QTcpServer::newConnection,this,&TLTcpServer::onNewConnection);
}
void CTcpServer::onNewConnection()
{
m_pTcpSocket = m_pTcpServer->nextPendingConnection();
connect(m_pTcpSocket,&QTcpSocket::readyRead,this,&CTcpServer::onReadMessage);
}
void CTcpServer::onReadMessage()
{
QByteArray ba = m_pTcpSocket->readAll();
}
void CTcpServer::_writeData(QString data)
{
QByteArray array = data.toStdString().c_str();
m_pTcpSocket->write(array,strlen(array));
}
客户端
#include <QObject>
#include <QTcpSocket>
class CTcpSocket : public QObject
{
Q_OBJECT
public:
explicit CTcpSocket(QObject *parent = 0);
~CTcpSocket();
void setHostAddr(QString hostAddr);//设置服务端ip地址
void setSendData(QByteArray data);
private slots:
void onReadyRead();
private:
QTcpSocket * m_pTcpSocket = NULL;
};
源文件
CTcpSocket::CTcpSocket(QObject *parent) : QObject(parent)
{
m_pTcpSocket = new QTcpSocket();
connect(m_pTcpSocket,&QTcpSocket::readyRead,this,&CTcpSocket ::onReadyRead);
}
CTcpSocket::~CTcpSocket()
{
delete m_pTcpSocket;
}
void CTcpSocket::onReadyRead()
{
QByteArray ba = m_pSocket->readAll();
qDebug() << "tcpSocket::onReadyRead() ba="<<ba;
}
void CTcpSocket::setHostAddr(QString hostAddr)
{
m_pTcpSocket->connectToHost(hostAddr,5678);
if(!m_pTcpSocket->waitForConnected()){
qDebug() << "Rcontrol socket connect error";
}
else{
qDebug() << "Rcontrol socket connect success";
}
}
void CTcpSocket::setSendData(QByteArray data)
{
m_pTcpSocket->write(data);
m_pTcpSocket->flush();
}