C++ 最简单的QT-TCP服务器
从客户机接收数据需要什么C++ 最简单的QT-TCP服务器,c++,qt,networking,tcp,network-programming,C++,Qt,Networking,Tcp,Network Programming,从客户机接收数据需要什么 QTcpServer Server; if(!Server.listen("127.0.0.1", 9000)) { return; } connect(Server, SIGNAL(newConnection()), this, SLOT(ReceiveData())); 到目前为止这是正确的吗?接收数据时我需要什么?我真的需要另一个函数来接收数据吗?我想把它保存在QByteArray中 谢谢你看到这个例子了吗 附言: 是的,您至少需要一个回调函数来
QTcpServer Server;
if(!Server.listen("127.0.0.1", 9000)) {
return;
}
connect(Server, SIGNAL(newConnection()), this, SLOT(ReceiveData()));
到目前为止这是正确的吗?接收数据时我需要什么?我真的需要另一个函数来接收数据吗?我想把它保存在QByteArray中
谢谢你看到这个例子了吗 附言: 是的,您至少需要一个回调函数来: 1) 接受新连接
2) 在connect(s)上接收和发送数据由于这一问题尚未得到回答,下面是一个非常基本的示例 在ReceiveData插槽中,您需要接受来自服务器的连接 在Qt的QTcpServer中,这是通过调用nextPendingConnection()完成的 因此,QTcpServer的新连接插槽将调用您的ReceiveData插槽 在receivedata插槽中,您可以执行以下操作:
void ReceiveData()
{
QTcpSocket *socket = server->nextPendingConnection();
if (!socket)
return;
qDebug("Client connected");
socket->waitForReadyRead(5000);
QByteArray data = socket->readAll();
qDebug(data.constData());
socket->close();
}
注意:这是一个阻塞示例,waitForReadyRead将挂起线程长达5000毫秒
要做一个非阻塞示例,您需要将另一个插槽连接到新插槽的readyread信号。是的,我已经看过了示例,但对于我想要介绍的简单内容来说,这些太复杂了do@JohnSmith你想要的是过于简单的,没有阻塞就无法完成。Qt采用非阻塞套接字设计,需要单独的接受和接收回调。