You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Cigarette/Cigarette/threadSendTCP.h

78 lines
1.4 KiB
C++

#pragma once
#include <QWidget>
#include <QDebug>
#include <QDateTime>
#include <iostream>
#include <QThread>
#include <qtcpsocket.h>
#include "common.h"
#include "SyncQueue.h"
#include <QTcpServer>
class _TCPSendInfo
{
public:
std::string pics_name;
std::string result;
std::string num;
_TCPSendInfo()
{
pics_name = "";
}
};
class threadSendTCP : public QThread {
public:
QString ip;
int port;
int num = 0;
threadSendTCP(QObject* o = nullptr) :QThread(o)
{
isLoop = true;
}
~threadSendTCP()
{
stop();
_TCPSendInfo TCPSendInfo;
Local_TCP_Info_queue->put(TCPSendInfo);
quit();
wait();
}
void stop();
#ifdef __TCPClient
bool connectTCP();
#endif
protected:
void run();
public:
void init(SyncQueue<_TCPSendInfo>* p_TCP_Info_queue, std::string ip_, int port_);
void start_work();
void sendData(_TCPSendInfo* TCPSendInfo, int Num);
std::vector<int> stringToAscii(const std::string& str);
#ifdef __TCPServer
private slots:
void onNewConnection();
void onClientConnected();
void onClientDisconnected();
#endif
public:
SyncQueue<_TCPSendInfo>* Local_TCP_Info_queue;
std::atomic_bool isLoop = { 0 };
#if defined(__TCPServer) || defined(__TCPClient)
QTcpSocket* mySocket = NULL;
#endif
#ifdef __TCPServer
QTcpServer *tcpServer = NULL;
QAbstractSocket::SocketState ClientStatus;
#endif
};