简述
TCP服务器的代码实现比UDP略为复杂一点,因为TCP的服务端需要生成与管理一个额外的QTcpServer对象。为了支持多线程,用moveToThread方法把服务器放在一个单独的线程中。
代码之路
用MyTcpServer类实现TCPserver,供主程序调用方法。
MyTcpServer类头文件内容如下:
//MyTcpServer.h
# include <QObject>
#include <QTcpServer>
#include <QTcpSocket>
#include <QThread>
#include <QDebug>
class MyTcpServer : public QObject
{
Q_OBJECT
public:
explicit MyTcpServer(QObject *parent = 0);
~MyTcpServer();
signals:
void dataArrive(QByteArray ba); //send data to deal
public slots:
void onNewConnection(); //new connection come
void socketReaddata(); //read socket data
private:
QTcpServer *m_tcpserver;
QTcpSocket *m_socket;
QByteArray tmpdata;
QThread *m_thread;
int tcpPort = 6000;
QByteArray m_buffer;
}
MyTcpServer类的源文件如下:
//MyTcpServer.cpp
MyTcpServer::MyTcpServer(QObject *parent) : QObject(parent)
{
m_thread