C++ QT定时器信号中的Udp写入数据报

C++ QT定时器信号中的Udp写入数据报,c++,qt,sockets,timer,C++,Qt,Sockets,Timer,我有一个线程,每当计时器过期时发送udp数据包。计时器间隔为20秒。我将超时信号连接到send_data函数。在该函数中,我正在做一些工作,并使用udp发送数据包。在该函数中,我还添加了一个计时器,以了解函数消耗的时间 QTimer timer; timer.setInterval(20); connect(timer,signal(timeout()),slot(send_data()); send_data(){ QElapsedTimer t;

我有一个线程,每当计时器过期时发送udp数据包。计时器间隔为20秒。我将超时信号连接到send_data函数。在该函数中,我正在做一些工作,并使用udp发送数据包。在该函数中,我还添加了一个计时器,以了解函数消耗的时间

  QTimer timer;

  timer.setInterval(20);

  connect(timer,signal(timeout()),slot(send_data());

  send_data(){

     QElapsedTimer t;

     t.start();

     mysocket.writedatagram();//Do some work and send data via Udp

     cout<<t.elapsed()<<endl;
   }
QTimer定时器;
定时器设置间隔(20);
连接(定时器、信号(超时())、插槽(发送数据());
发送数据(){
qedtimer t;
t、 start();
mysocket.writedatagram();//执行一些工作并通过Udp发送数据

coutt生成的值不必在1的步骤中递增,它们将通过某种方式从系统时钟中提取(它可以变化)。因此,如果它正在使用的时钟以7毫秒为单位递增,而您的writeDatagram需要4毫秒,则有时您会返回0,因为时钟没有滴答作响,有时您会返回7,因为在这4毫秒内确实发生了时钟滴答作响。

我猜您的意思是您在
s中使用了
QeReleasedTimer
结束\u数据
?另外,您可以发布
发送\u数据
的正文吗?没有它,我们无法解释您得到的结果。@RA谢谢。我编辑过。