73 lines
2.3 KiB
C++
73 lines
2.3 KiB
C++
#include "serverthread.h"
|
|
|
|
#if _MSC_VER >= 1600
|
|
#pragma execution_character_set("utf-8")
|
|
#endif
|
|
|
|
serverThread::serverThread(qintptr sockDesc, QObject *parent):
|
|
QThread(parent),
|
|
m_sockDesc(sockDesc)
|
|
{
|
|
qRegisterMetaType<qintptr>("qintptr");
|
|
}
|
|
|
|
serverThread::~serverThread() //当线程容器本身消亡时 断开其控制的Socket连接
|
|
{
|
|
m_socket->close();
|
|
}
|
|
|
|
void serverThread::run(void) //线程容器这辈子要干的事
|
|
{
|
|
m_socket = new MySocket(m_sockDesc);
|
|
|
|
if (!m_socket->setSocketDescriptor(m_sockDesc)) //向套接字设立唯一标识符
|
|
{
|
|
return ;
|
|
}
|
|
|
|
connect(m_socket, &MySocket::disconnected, this, &serverThread::disconnectToHost); //当Socket套接字连接断开时当前线程容器怎么做
|
|
|
|
connect(m_socket, SIGNAL(IMGdataReady(const QString&, const QByteArray&, QString)),//Save 这里只是线程容器把Socket接收到的信息转发至Server套接字列表
|
|
this, SLOT(IMGrecvDataSlot(const QString&, const QByteArray&, QString)));
|
|
|
|
connect(m_socket, SIGNAL(LiveViewIMG(qintptr, QImage)),//Live View 这里只是线程容器把Socket接收到的信息转发至Server套接字列表
|
|
this, SLOT(LiveViewIMGSlot(qintptr, QImage)));
|
|
|
|
connect(this, SIGNAL(sendData(QString, const QByteArray&)), //传递Server要求某套接字发送信息
|
|
m_socket, SLOT(sendData(QString, const QByteArray&)));
|
|
|
|
m_sockDesc_IP= m_socket->peerAddress().toString().remove(0, 7);
|
|
emit ShowIP(m_sockDesc_IP);//把这个socket连接的IP告知Server
|
|
|
|
this->exec();//这个位置?
|
|
|
|
|
|
}
|
|
|
|
void serverThread::sendDataSlot(QString IP, const QByteArray &data) //中转 由Server告知某Socket发送信息
|
|
{
|
|
if (data.isEmpty())
|
|
{
|
|
return ;
|
|
}
|
|
|
|
emit sendData(IP, data);
|
|
}
|
|
|
|
void serverThread::IMGrecvDataSlot(const QString &ip, const QByteArray &data ,QString ImgName) //中转 Socket把要存储的照片交付Server
|
|
{
|
|
emit IMGdataReady(ip, data,ImgName);
|
|
}
|
|
|
|
void serverThread::LiveViewIMGSlot(qintptr id , QImage img) //中转 Socket把要预览的照片交付
|
|
{
|
|
emit LiveViewIMG(id,img);
|
|
}
|
|
|
|
void serverThread::disconnectToHost()//告知总ServerList容器里的套接字已经结束连接 同时线程容器本身也就没用了
|
|
{
|
|
emit disconnectTCP(m_sockDesc_IP);
|
|
m_socket->disconnectFromHost();
|
|
this->quit();
|
|
}
|