Bonjour,

Voilà je m'essaye au langage QT et j'essaye de coder une application qui envoie des datagrammes en UDP, mais le soucis c'est que dès que je clique sur l'envoie de ma première trame ou ma deuxième l'application se ferme et j'obtiens l'erreur: cannot output file debug /nomduprogramme.exe : Permission denied.
J'ai fais des recherches sur le web et normalement c'est parce que le programme tourne toujours mais pourtant je n'ai rien dans mon gestionnaire des tâches.... Du coup à chaque fois je dois recréer le programme....
Je vous mets mon code si quelqu'un peut m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef SENDER_H
#define SENDER_H
 
#include <QWidget>
#include <QTimer>
 
class QLabel;
class QPushButton;
class QUdpSocket;
 
class Sender : public QWidget
{
    Q_OBJECT
 
public:
    explicit Sender(QWidget *parent = nullptr);
 
private slots:
    void startBroadcasting();
    void Datagram();
    void deuxdata();
 
private:
    QLabel *status = nullptr;
    QPushButton *startButton = nullptr;
    QPushButton *premieretrame;
    QPushButton *deuxiemetrame;
    QUdpSocket *udpSocket = nullptr;
    QTimer timer;
    QTimer timemesure;
    int messageNo = 1;
};
 
#endif SENDER_H
cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
#include <QtWidgets>
#include <QtNetwork>
#include <QtCore>
 
#include "mainwindow.h"
 
Sender::Sender(QWidget *parent)
    : QWidget(parent)
{
    status = new QLabel(tr("Pret a envoyez les datagrammes sur le port 45454"));
    status->setWordWrap(true);
 
    premieretrame = new QPushButton("trames1");
    deuxiemetrame = new QPushButton("Trames 2");
    startButton = new QPushButton(tr("&GO"));
    auto quitButton = new QPushButton(tr("&Quittez"));
 
    auto buttonBox = new QDialogButtonBox;
    buttonBox->addButton(startButton, QDialogButtonBox::ActionRole);
    buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole);
 
    udpSocket = new QUdpSocket(this);
 
    connect(startButton, &QPushButton::clicked, this, &Sender::startBroadcasting);
    connect(quitButton, &QPushButton::clicked, this, &Sender::close);
    connect(premieretrame, &QPushButton::clicked, this, &Sender::Datagram);
    connect(deuxiemetrame, &QPushButton::clicked, this, &Sender::deuxdata);
 
 
    auto mainLayout = new QVBoxLayout;
    mainLayout->addWidget(status);
    mainLayout->addWidget(premieretrame);
    mainLayout->addWidget(deuxiemetrame);
 
    mainLayout->addWidget(buttonBox);
    setLayout(mainLayout);
 
    setWindowTitle(tr("Sender"));
}
 
void Sender::startBroadcasting()
{
    startButton->setEnabled(false);
    timer.start(1000);
    timemesure.start(1500);
}
 
void Sender::Datagram()
{
    status->setText(tr("Trames=%1").arg(messageNo));
    QByteArray datagram = "J'ai reussi=" + QByteArray::number(messageNo);
    udpSocket->writeDatagram(datagram, QHostAddress::Broadcast, 45454);
    ++messageNo;
}
void Sender::deuxdata()
{
    status->setText(tr("Envoie mesure relevé"));
    QByteArray data ="Mesure envoyée";
    udpSocket->writeDatagram(data,QHostAddress::Broadcast, 45454);
}