serverthread.cpp

来自「Android实现远程控制PC源代码」· C++ 代码 · 共 51 行

CPP
51
字号
#include "serverthread.h"
#include <QFile>
#define COMMAND_SIZE 50
ServerThread::ServerThread(int socketDescriptor,QObject *parent,MainWindow *m,int c):QThread(parent)
{
    this->mainWindow=m;
    this->clientCode=c;
    socket=new QTcpSocket(parent);
    socket->setSocketDescriptor(socketDescriptor);
}

void ServerThread::run()
{
    this->connect(socket,SIGNAL(readyRead()),this,SLOT(receiveData()));
    connect(this,SIGNAL(newCommand(const char*,int,const char*,int)),this->mainWindow,SLOT(execCommand(const char*,int,const char*,int)));
    connect(this->mainWindow,SIGNAL(writeFile(int)),this,SLOT(readFile(int)));
    exec();
}

void ServerThread::receiveData()
{
    int left=socket->bytesAvailable();
    char *command=new char[COMMAND_SIZE];
    while(left>0)
    {
        int read=socket->readLine(command,COMMAND_SIZE);
        emit newCommand(command,read,"test",this->clientCode);
        left-=read;
    }
}

void ServerThread::readFile(int cC)
{
    if(cC==this->clientCode)
    {
        QFile *file=new QFile("temp.txt");
        if(file->open(QIODevice::ReadWrite))
        {
            char *buffer=new char[100];
            int length;
            while((length=file->read(buffer,100))>0)
            {
                socket->write(buffer,length);
            }
        }
        socket->flush();
        file->close();
        system("del temp.txt");
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?