从客户端接收数据需要什么?
QTcpServer Server;
if(!Server.listen("127.0.0.1", 9000)) {
return;
}
connect(Server, SIGNAL(newConnection()), this, SLOT(ReceiveData()));
到目前为止这是正确的吗?我在ReceiveData中需要什么?我真的需要另一个功能来接收数据吗?我想将它保存在QByteArray
中由于
答案 0 :(得分:3)
你见过这个例子:
http://doc.qt.io/qt-5/qtnetwork-fortuneserver-server-cpp.html
PS: 是的,您需要至少一个回调函数:
1)接受新的连接
2)在连接上接收和发送数据
答案 1 :(得分:3)
由于这还没有得到解答,这是一个非常基本的例子。
在您的ReceiveData插槽中,您需要接受来自服务器的连接。
在Qt的QTcpServer中,这是通过调用nextPendingConnection()来完成的。
因此,QTcpServer的newConnection插槽将调用您的ReceiveData插槽。
在您的receiveata广告位中,您可以执行以下操作:
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信号。