[QT] erreur reseau inconnue.

Résolu/Fermé
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 26 avril 2009 à 12:00
 IPUN8 - 7 oct. 2012 à 09:33
Bonjour,
voilà, j'ai mi le code suivant :
    QTcpSocket s;
    char buf[256];buf[0]=0;
    s.connectToHost(ui->serveur->text(),25);
    qDebug()<<s.waitForConnected(1000);
    qDebug()<<s.read(buf,256);qDebug()<<buf;qDebug()<<s.error();
    qDebug()<<s.write("EHLO BOUFFON\r\n");

Et il me retourne :
true 
0 
 
QAbstractSocket::UnknownSocketError 
14 

C'est à dire qu'il a bien réussi à se connecter, mais qu'il reçoit 0 octet de la part du serveur, et qu'il rencontre une erreur inconnu.
Ce que je ne comprends pas, car j'utilise le même protocole qu'un vieux programme en C++ qui lui fonctionnait très bien.
(pour info :)
    int tt=::connect(dist,(SOCKADDR *)&sindist, sizeof(sindist));
    recv(dist,buf,210,0);printf(buf);
    sbuf="EHLO Beber\r\n";
    send(dist,sbuf,strlen(sbuf),0);printf("send %s\n",sbuf);

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 avril 2009 à 08:14
Salut.
j'ai trouvé la solution, je ne remercie pas trop la doc QT qui n'est pas clair sur ce sujet.
En fait, avant chaque "read" il faut faire :
s.waitReadReady();// ou une fonction du genre, je n'ai plus en tête.
La fonction ne semble pas travaillé comme recv() standard, surment une histoire de socket bloquant ou non. C'est un peu casse pied.
Pour le port 25, je me suis dit que pour envoyer des courriels, passer par un serveur SMTP c'était pas mal ;) mais merci tout de même de la précision.
0
ou tu la trouver se code
0
Je ne sais pas si je vais t'apporter la bonne solution à ton problème.
Toutefois, je n'ai que deux remarques à émettre vu le peu d'informations:
- le port 25 est le port SMTP,
- en retournant 0, la fonction 'read' dit qu'il y a 0 octets à lire mais elle ne signale pas d'erreur (en cas d'erreur elle renvoie -1) donc la lecture de l'erreur ne signifie rien.
C'est tout pour le moment ;-)
-1