先看服务端

#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();
}