Qt:服务器从套接字接收数据

时间:2013-08-29 17:02:04

标签: c++ qt sockets networking client-server

我正在使用Qt并尝试创建客户端 - 服务器连接。每当我单击客户端应用程序中的按钮时,套接字就会连接到服务器并发送一些数据。问题是我不知道如何接收数据。这些是我按钮的插槽。

void MainWindow::func_button_one(){
socket->connectToHost("127.0.0.1", 1324);

if(socket->waitForConnected(1000)) {
socket->write("button one has been pressed");
socket->waitForBytesWritten(1000);
}

else {
    qDebug() << "Something terrible seems to have happened.";
}
}

现在,在我的服务器应用程序中,我尝试了类似的东西。

void MainWindow::newConnection(){
QTcpSocket *socket = server->nextPendingConnection();

socket->waitForReadyRead(1000);
qDebug() << "connection received";
qDebug() << socket->readAll();
socket->close();
}

连接正常,因为显示“已收到连接”消息。那么,我该如何从客户端接收数据呢? QTcpServer没有任何read()函数。

1 个答案:

答案 0 :(得分:2)

连接没问题,因为waitForReadyRead返回'true',或者连接不正确,因为waitForReadyRead在1000ms后返回false。你怎么知道这个区别?

更好地与信号异步工作。将您的套接字连接到'readyRead()'。或者至少测试waitForReadyRead的返回值。