从一个线程写入套接字并从另一个线程读取

时间:2019-01-08 14:53:06

标签: qt qt5

我是qt的新手,正在尝试实现客户端服务器程序。在客户端,我想从一个线程(主线程)写入,并从另一线程(主线程)读取套接字,但是我收到以下通知。

QSocketNotifier:无法从另一个线程启用或禁用套接字通知程序
[2019年1月8日,星期二,15:21:19] SW更新文件已转移“

它确实读取套接字,但是给出了此通知。我需要担心还是忽略它?

代码如下。

tcp_client.h

namespace Ui {
class TCP_Client;
}

class TCP_Client : public QMainWindow
{
Q_OBJECT
public:
explicit TCP_Client(QWidget *parent = nullptr);
MyThread *mThread;
~TCP_Client();
private slots:
void on_pushButton__SW_Update_clicked();
public:
Ui::TCP_Client *ui;
TCP_clientClass *client;
};

tcp_client.cpp

void on_pushButton__SW_Update_clicked{  
/*some work done here*/
 client->tcpSocket->write(buffer,16);
 mThread = new MyThread(client->tcpSocket,this);
 mThread->start();
} 

mythread.h

class MyThread : public QThread
{  
Q_OBJECT
public:
    explicit MyThread(QTcpSocket *ID, QObject *parent =0);
    void run ();
    bool Stop;
signals :
    void NumberChanged(QByteArray a);
public slots : 
private:
    QTcpSocket *socket1;
    };  

mythread.cpp

MyThread::MyThread(QTcpSocket *ID,QObject *parent) : QThread(parent)
{
socket1 = new QTcpSocket();
socket1=ID;
}  

void MyThread::run()
{
QByteArray a;
qDebug()<<"Inside running thread";
socket1->waitForReadyRead(-1);
a= socket1->readAll();
qDebug() << a;
}

基本上,我是在按下按钮时编写的,并且在内部创建了一个线程,以便它可以读取服务器发送的数据。

0 个答案:

没有答案