Qt客户端程序中的零拷贝

时间:2013-06-26 06:44:21

标签: c++ qt zero-copy

我正在尝试在我的客户端程序中实现零拷贝方法,我将从服务器接收大量数据。这是我的客户端程序: //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

// Client.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()使用内存副本它们不适合零拷贝approach.client是QTcpsocket的实例。我应该在这里使用什么。任何建议,如我没有得到任何API,或者我应该编写自己的函数。如果我必须编写自己的函数,它将如何调用transmitfile()api。

0 个答案:

没有答案