Qt零拷贝在c++中的应用
zero copy in Qt application in C++
这是我写的程序,在Qt应用程序中实现零复制,但得到一些错误写在下面:
//client.h
#ifndef CLIENT1_H
#define CLIENT1_H
#include <QObject>
#include <QString>
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QtNetwork>
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 // CLIENT1_H
//client.cpp
#include "client1.h"
#include <QtNetwork/QHostAddress>
#include <MSWSockDef.h>
#include <MSWSock.h>
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()
{
int TransmitFile( client,
hfile,
NULL,
NULL,
NULL,
NULL,
TF_USE_SYSTEM_THREAD
);
}
//main.cpp
#include <QCoreApplication>
#include <fstream>
#include <iostream>
#include "client1.h"
#include <QtNetwork/QtNetwork>
#include <Windows.h>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
HFILE hfile;
//Creates an instance of ofstream, and opens example.txt
ofstream a_file ( "example.txt" );
// Outputs to example.txt through a_file
a_file<<"This text will now be inside of example.txt";
// Close the file stream explicitly
hfile = a_file;
//a_file.close();
//hfile = a_file.open("example.txt");
//hfile = a_file.open("example.txt",ios_base::app);
Client client;
client.start("127.0.0.1", 8888);
return a.exec();
}
错误如下:
C:Program FilesMicrosoft SDKsWindowsv7.0AincludeMSWSock.
error: C2061: syntax error : identifier 'LPWSAMSG'
C:Program FilesMicrosoft SDKsWindowsv7.0AincludeMSWSock.h
error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:Program FilesMicrosoft SDKsWindowsv7.0AincludeMSWSock.h
error: C4430: missing type specifier - int assumed. Note: C++ does not support default-int
我知道在transmitfile() api中有错误,但这些错误可以被删除,关于上面的错误呢?"在这里输入密码?"
完成以上操作后,只需运行一次qmake,它就可以工作了
您可能需要包含Winsock2.h,您可以试试吗?
尝试删除Mswsockdef.h
include。
源…Mswsockdef.h头文件,自动包含在h头文件。Mswsockdef.h头文件不应该是直接使用。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- c++r值引用应用于函数指针
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 有没有任务栏API可以立即应用注册表更改
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?