703
社区成员
发帖
与我相关
我的任务
分享
#ifndef ACLIENT_H
#define ACLIENT_H
#include <QObject>
#include <QHostAddress>
#include <QTcpSocket>
class AClient : public QObject
{
Q_OBJECT
public:
explicit AClient(QObject *parent = 0);
//线程启动时的初始化
bool start();
//设置服务器ip
void setIP_Address(QString ip);
//设置服务器端口
void setPort(quint16 port);
//断线重连
bool ReConnectOnLoss(QHostAddress address);
//发送string
qint64 writeString(QString str);
//发送字节流
qint64 writeByteArray(QByteArray block);
private:
//服务器ip
QString IP_ADDRESS;
//服务器端口
quint16 PORT;
//套接字
QTcpSocket *socket;
};
#endif // ACLIENT_H
#ifndef ATHREAD_H
#define ATHREAD_H
#include <QThread>
#include "aclient.h"
class AThread : public QThread
{
Q_OBJECT
public:
AThread(QString ip,quint16 port);
~AThread();
//发送字符串
qint64 writeStr(QString str);
//发送字节流
qint64 writeByteArray(QByteArray block);
protected:
void run();
private:
//负责通信的接受和发送
AClient *myclient;
//服务端ip
QString IP_Address;
//服务端端口
quint16 Port;
};
#endif // ATHREAD_H
#ifndef DLLAURORASOCKET_H
#define DLLAURORASOCKET_H
#include "mythread.h"
extern "C"
{
Q_DECL_EXPORT IAuroraSocket * createSocketThread();
Q_DECL_EXPORT void RealeaseThread(IAuroraSocket *asocket);
}
#endif // DLLAURORASOCKET_H
#ifndef IAURORASOCKET_H
#define IAURORASOCKET_H
#include "iaurorasocket_global.h"
class IAURORASOCKETSHARED_EXPORT IAuroraSocket
{
public:
IAuroraSocket();
virtual ~IAuroraSocket();
virtual void dosomething() = 0;
};
#endif // IAURORASOCKET_H
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include "iaurorasocket.h"
#include <QDebug>
#include <QObject>
#include <athread.h>
class MyThread:public IAuroraSocket,public QObject
{
public:
MyThread();
virtual ~MyThread();
virtual void dosomething();
//private:
AThread *athread;
int i;
};
#endif // MYTHREAD_H
#include "mythread.h"
MyThread::MyThread()
{
//this->athread = new AThread("192.168.1.17",2048);
//this->athread->start();
i=0;
}
MyThread::~MyThread()
{
}
void MyThread::dosomething(){
//i++;
//qDebug()<<"1234";
this->athread = new AThread("192.168.1.17",2048);
this->athread->start();
}
QLibrary lib("D:\\Codes\\qt\\build-DllAuroraSocket-Desktop_Qt_5_3_MinGW_32bit-Debug\\debug\\DllAuroraSocket.dll");
if (lib.load())
{
qDebug()<<"加载成功";
// 定义插件中的两个导出函数的原型
typedef IAuroraSocket* (*CreateSocketFunction)();
typedef void (*ReleaseSocketFunction)(IAuroraSocket* mysocket);
// 解析导出函数
CreateSocketFunction createASocket =
(CreateSocketFunction) lib.resolve("createSocketThread");
ReleaseSocketFunction releaseASocket =
(ReleaseSocketFunction) lib.resolve("RealeaseThread");
if (createASocket && releaseASocket)
{
qDebug()<<"导出成功";
// 创建Animal对象
IAuroraSocket * ASocket = createASocket();
//IAuroraSocket * ASocket1 = createASocket();
if (ASocket)
{
// 使用插件功能
ASocket->dosomething();
// 插件使用完毕,删除对象
// releaseASocket(ASocket);
}
}
else
{
qDebug()<<"导出失败";
}
// 卸载插件
lib.unload();
}
else
{
qDebug()<<"加载失败";
}