2016-11-03 5 views
1

Ich möchte Server von Client-Daten senden, wenn ich versuche zu serevr, Client zeigen unkown Fehler zu verbinden, und es werden keine Daten gesendetQTcpSocket unbekannter Fehler

seine Show nur leere Zeichenkette „“,

jede Hilfe wird geschätzt.

hier ist der Code:

// Client

Widget::Widget(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Widget) 
{ 
    ui->setupUi(this); 

    tcpSocket = new QTcpSocket(this); 

    connect(tcpSocket, SIGNAL(connected()), this, SLOT(connected())); 

    QHostAddress ha; 
    ha.setAddress("myIP"); 

    tcpSocket->connectToHost(ha, 6401); 

    if(!tcpSocket->waitForConnected(3000)) { 
     ui->lineEdit->setText(tcpSocket->errorString()); 
    } 
    else 
     ui->lineEdit->setText("connected"); 
} 

void Widget::connected() 
{ 
    tcpSocket->write("hello this is client\r\n"); 
    tcpSocket->flush(); 
    tcpSocket->waitForBytesWritten(3000); 

    tcpSocket->close(); 
} 

// server

Widget::Widget(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Widget) 
{ 
    ui->setupUi(this); 

    tcpServer = new QTcpServer(this); 

    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection())); 

    if(!tcpServer->listen(QHostAddress::Any, 6401)) { 
      ui->lineEdit->setText("server not started"); 
     } 
     else 
      ui->lineEdit->setText("server started"); 
} 

void Widget::newConnection() 
{ 
    QTcpSocket *tcpSocket= tcpServer->nextPendingConnection(); 

    qDebug() << tcpSocket->readAll(); 
    tcpSocket->waitForReadyRead(3000); 

    tcpSocket->close(); 
} 
+0

Ich gehe davon aus ' "MyIP"' ist nur ein Platzhalter. Was passiert, wenn Sie stattdessen den lokalen Loopback "127.0.0.1" angeben? –

+0

gleicher Fehler passieren, unbekannter Fehler und leere Zeichenfolge. –

+0

Problem war in Ordnung, wenn die Daten gelesen wurden –

Antwort

0

hier ist das Problem:

// falsche Reihenfolge

qDebug() << tcpSocket->readAll(); 
tcpSocket->waitForReadyRead(3000); 

// richtige Reihenfolge:

tcpSocket->waitForReadyRead(3000); 
qDebug() << tcpSocket->readAll();