QT做简单TCP客户端问题

1、当发送大的文件的时候,mSocket->readAll();并不能收取全部的数据包,需要根据文件大小来接收,服务器先发送文件的大小给客户端,再根据文件大小来收取文件

mSocket->readAll();//这个是将TCP整个数据流里面的数据拿出来,如果在整个后面使用recvbytes = mSocket->bytesAvailable();,此时,recvbytes=0;

rdvoice(&msg);

        file_size -= recvbytes;

2、文件的读取问题

    QFile file;

    file.setFileName("./1.wav");

    //file.open(QIODevice::WriteOnly |QIODevice::Append); //整个方式,没有办法做到在文件尾部追加数据

    file.open(QIODevice::Append);//这里是在文件尾追加数据的方式打开

    file.seek(file.size());

    file.write(*msg);

file.close();

3、C语言将int转换为char型

sprint(num,”%d”,123);

4.QT动图显示

#include <QMovie>

QMovie *image = new QMovie("./1.jpg");

ui->label_photo->setMovie(image);

image->start();

5、QT中TCP发送结构体

  mSocket->write((char *)&client_1,sizeof(client_1));  //发送客户端结构体

6、QT线程的简单使用

1)在.h文件

#include <QThread>

class myThread: public QThread

{

public:

    myThread();

    void run();

    exit_port *w;

};

2)在cpp文件

myThread::myThread() //构造

{

}

void myThread::run()

{

    while(1)

    {

        if(w->finish_send == 1){ //QT的ui显示

            w->show_id();

            w->show_photo();

            w->show();

            break;

        }

    }

}

3)在main.cpp

myThread *thread = new myThread;

thread->w = &w;

thread->start();

原文地址:https://www.cnblogs.com/yangjiquan/p/11447619.html