标题:QT网络通信 UDP广播+多线程问题
作者:suzhuorui
日期:2019-08-14 20:36
内容:
程序A中每次创建5个线程发送广播 但是程序B每次只能接收到2个。代码就是最简单的测试代码,求大佬告知问题所在
#1 [firebolt 08-14 22:09]
不明白广播为啥要用5个线程,如果是测试多线程需要给udpSocket加个锁。
#2 [yunchao630 08-15 08:36]
同上,发送广播的函数互斥一下
#3 回 firebolt 的帖子 [suzhuorui 08-15 14:12]
firebolt:不明白广播为啥要用5个线程,如果是测试多线程需要给udpSocket加个锁。 (2019-08-14 22:09)
加锁的话,我是在run函数中加的,也没用呀
如果我想让 for循环中的5个线程 依次发送广播,就是等待第一个线程发送完毕再开始第二个线程,要怎么办呢?
#4 回 suzhuorui 的帖子 [suzhuorui 08-15 14:28]
suzhuorui:加锁的话,我是在run函数中加的,也没用呀
如果我想让 for循环中的5个线程 依次发送广播,就是等待第一个线程发送完毕再开始第二个线程,要怎么办呢? (2019-08-15 14:12)
用计时器可以做到但是用for循环怎么做呢?求大神指点
#5 [powerriver 08-20 22:52]
使用信号/槽,不要使用循环的方式,在初始化时
udpsocket = new QUdpSocket(this);
bool ret = udpsocket->bind(port, QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint);
if (!ret)
exit(0);
connect(udpsocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));
void Mainwindow::readPendingDatagrams()
{
while(udpsocket->hasPendingDatagrams())
{
.....