Bonsoir,

J'essaye par l’intermédiaire, des sockets envoyés des données sur le réseau (ici local)

J'ai essayé de placer un QDebug() dans getData() et il semblerai que le serveur ne reçoivent pas le données ou bien que le client ne les envois pas...

Voici mes code :

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
62
63
64
65
66
67
68
69
70
71
#include "tcpserver.h"
 
TcpServer::TcpServer(QObject *parent) :
    QObject(parent)
{
    server = new QTcpServer(this);
 
    if(!server->listen(QHostAddress::LocalHost, 7777))
    {
        qDebug() << "The server can't connect. Reason:" << server->errorString();
    }
    else
    {
        qDebug() << "The server is running on port" << server->serverPort();
        connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));
    }
    tailleMessage = 0;
}
 
void TcpServer::newConnection()
{
    QTcpSocket *client = server->nextPendingConnection();
 
    qDebug() << "Client connected !";
 
    connect(client, SIGNAL(readyRead()), this, SLOT(getData()));
    connect(client, SIGNAL(disconnected()), this, SLOT(deconnectionClient()));
}
 
void TcpServer::getData()
{
    QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
    if(socket == 0)
        return;
 
    QDataStream in(socket);
 
    if(tailleMessage == 0)
    {
        if(socket->bytesAvailable() < (int)sizeof(quint16))
            return;
 
        in >> tailleMessage;
    }
 
    if(socket->bytesAvailable() < tailleMessage)
        return;
 
    QString message;
    in >> message;
 
    saveData(message);
 
    tailleMessage = 0;
}
 
void TcpServer::deconnectionClient()
{
    qDebug() << "Client disconnected !";
 
    QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
    if (socket == 0)
        return;
 
    socket->deleteLater();
}
 
void TcpServer::saveData(const QString &data)
{
    qDebug() << data;
}

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
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    if(!(ui->lineEdit->text().isEmpty()) && !(ui->lineEdit_2->text().isEmpty()))
    {
        socket = new QTcpSocket(this);
        socket->abort();
        socket->connectToHost(QHostAddress::LocalHost, 7777);
        sendData(ui->lineEdit->text());
        sendData(ui->lineEdit_2->text());
    }
 
    socket->deleteLater();
}
 
void MainWindow::sendData(const QString &data)
{
    QByteArray paquet;
    QDataStream out(&paquet, QIODevice::ReadWrite);
 
    out << (quint16) 0;
    out << data;
    out.device()->seek(0);
    out << (quint16) (paquet.size() - sizeof(quint16));
 
    socket->write(paquet);
}