QThread中执行UDP发送

参照文章《解析Qt中QThread使用方法》(http://mobile.51cto.com/symbian-268690.htm)修改得来。


代码如下:


dummy.h


#ifndef DUMMY_H
#define DUMMY_H

#include <QObject>

class Dummy : public QObject
{
    Q_OBJECT
public:
    explicit Dummy(QObject *parent = 0){};

signals:
    void sig();
public slots:
    void emitsig()
    {
        emit sig();
    }
};

#endif // DUMMY_H

sendhandle.h


#ifndef SENDHANDLE_H
#define SENDHANDLE_H

#include <QUdpSocket>
#include <QDebug>

class SendHandle : public QObject
{
    Q_OBJECT
public:
    SendHandle();

    void init();

private slots:
    void sendfff();
private:
    QUdpSocket* sender;
};

#endif // SENDHANDLE_H

sendhandle.cpp


#include "sendhandle.h"

SendHandle::SendHandle()
    : sender(NULL)
{

}

void SendHandle::init()
{
    sender = new QUdpSocket();

    if (!sender->open(QIODevice::ReadWrite))
    {
        qDebug() << "open send udp socket failed.";
    }
}

void SendHandle::sendfff()
{
    if (NULL == sender)
    {
        init();
    }
    unsigned int uiRet = 0;

    char szBuf[] = "aa55aa55aa55aa55";

    QHostAddress _addr("192.168.1.255");
    uiRet = sender->writeDatagram(szBuf, strlen(szBuf)
           , _addr/*QHostAddress::Broadcast*/, 8888);

    qDebug() << uiRet;
}


main.cpp


#include <QtCore/QCoreApplication>
#include <QtCore/QObject>
#include <QThread>
#include <sendhandle.h>
#include "dummy.h"

int main (int argc, char* argv[])
{
    QCoreApplication a(argc, argv);

    QThread thread;

    SendHandle handle;

    Dummy dummy;

    handle.moveToThread(&thread);

    if (!QObject::connect(&dummy, SIGNAL(sig()), &handle, SLOT(sendfff())))
    {
        qDebug() << "connect failed.";
    }
    thread.start();
    dummy.emitsig();
    return a.exec();
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值