2016-11-03 10 views
1

QTcpSocket, 어떤 데이터는 빈 문자열 ""내가 serevr, 클라이언트 쇼 알 수없는 오류에 연결하려고 할 때, 클라이언트에서 서버로 데이터를 전송하려는 알 수없는 오류

하나를

의 쇼를 전송 도움을 주시면 감사하겠습니다. 여기

코드입니다 :

// 클라이언트

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(); 
} 

// 서버 여기

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

내가' "MyIP에를"가정은 '아무 것도 아니다. 대신 로컬 루프백' "127.0.0.1"'을 지정하면 어떻게됩니까? –

+0

동일한 오류가 발생하고 알 수없는 오류 및 빈 문자열이 발생합니다. –

+0

데이터를 읽을 때 문제가 발생했습니다. –

답변

0

문제입니다 :

// 잘못된 순서로

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

// 올바른 순서 :

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