我正在尝试在我的客户端程序中实现零复制方法,我将从服务器接收大量数据。这是我的客户端程序://Client.h
#ifndef CLIENT_H
#define CLIENT_H
#include <QtNetwork/QTcpSocket>
#include <QObject>
#include <QString>
class Client: public QObject
{
Q_OBJECT
public:
Client(QObject* parent = 0);
~Client();
void start(QString address, quint16 port);
public slots:
void startTransfer();
private:
QTcpSocket client;
};
#endif // CLIENT_H
//客户端.cpp
#include "client.h"
#include <QtNetwork/QHostAddress>
Client::Client(QObject* parent): QObject(parent)
{
connect(&client, SIGNAL(connected()),
this, SLOT(startTransfer()));
}
Client::~Client()
{
client.close();
}
void Client::start(QString address, quint16 port)
{
QHostAddress addr(address);
client.connectToHost(addr, port);
}
void Client::startTransfer()
{
virtual QByteArray client::readanydata();
}
readanydata() 应该被任何其他 API 替换,因为 read() 和 readall() 使用内存复制,它们不适合零复制方法。客户端是 QTcpsocket 的实例。我应该在这里使用什么。任何建议,因为我不是获取任何 API 或者我应该编写自己的函数。如果我必须编写自己的函数,它将如何调用传输文件() api。