【发布时间】:2020-01-28 17:22:48
【问题描述】:
我创建了一个 TcpServer 来接收来自客户端的数据。客户发送了很多消息,我想阅读它们。到目前为止,我的 TcpServer.cpp 看起来像这样:
void TcpServer::serverStart()
{
server = new QTcpServer(this);
if (!server->listen(QHostAddress("192.168.x.x"), 48583))
{
qDebug() << "Not listening";
server->close();
delete server;
return;
}
else {
qDebug() << "Listening";
}
connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));
}
void TcpServer::newConnection()
{
socket = server->nextPendingConnection();
qDebug() << "Client connected";
connect(socket, SIGNAL(readyRead()), this, SLOT(getData()));
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
}
void TcpServer::getData()
{
QByteArray buffer;
while (socket->bytesAvailable())
{
buffer.append(socket->readAll());
}
qDebug() << buffer;
}
void TcpServer::serverStop()
{
server->close();
delete server;
}
我知道我的 getData 函数需要更多才能接收所有内容,但我不明白执行此操作所需的步骤。如果有人能给我一些指点,我将不胜感激!
【问题讨论】:
-
你在tcp上面用什么,你的应用层协议是什么?
-
还有 Tcp !我有 2 个应用程序 App1 和 App2 通过 Tcp 相互发送消息,我尝试在两个应用程序之间创建一个工具,该工具将读取来自 App1 的消息,对其进行一些处理,然后将其发送到 App2。
-
那条评论不回答“你的应用层协议是什么?”。您必须在 TCP 之上做一些事情,例如根据某种格式/规范交换一些结构化消息。 那 是@ezegoing 所问的。 TCP 只是传输协议,您的应用程序必须在“按发送顺序到达的字节”(这是 TCP 为您提供的所有内容)之上期待其他内容。
-
哦,对不起,我是编程初学者,我没有很多关于消息的信息,但它们被构造为标题并包含字节,我尝试只阅读标题。不知道这能不能回答你的问题?
-
是的,我现在知道了,但这是我正在为我的实习工作的项目:/ 我将努力提高我的编程知识和技能,当我知道我在说什么时会回来找你,还是谢谢!