très simple avec QTcpSocket. Commencez comme vous l'avez fait ...
void MainWindow::connectTcp()
{
QByteArray data; // <-- fill with data
_pSocket = new QTcpSocket(this); // <-- needs to be a member variable: QTcpSocket * _pSocket;
connect(_pSocket, SIGNAL(readyRead()), SLOT(readTcpData()));
_pSocket->connectToHost("127.0.0.1", 9000);
if(_pSocket->waitForConnected()) {
_pSocket->write(data);
}
}
void MainWindow::readTcpData()
{
QByteArray data = pSocket->readAll();
}
Soyez conscient, cependant, que pour la lecture de la TCPSocket vous pouvez recevoir les données dans plus d'une transmission, par exemple. lorsque le serveur vous envoie la chaîne "123456", vous pouvez recevoir "123" et "456". Il est de votre responsabilité de vérifier si la transmission est complète. Malheureusement, cela aboutit presque toujours à ce que votre classe soit dynamique: la classe doit se souvenir de la transmission qu'elle attend, si elle a déjà commencé et si elle est complète. Jusqu'à présent, je n'ai pas trouvé un moyen élégant de contourner cela.
Bien obligé Robin, pourriez-vous fournir un code pour recevoir des données? –
Bien sûr. J'ai édité ma réponse en conséquence. – Robin
Merci monsieur !! –