我正在创建一个简单的 TCP 服务器,并构建了一个插槽/函数,它从 TCP 套接字上的客户端(telnet 连接)读取传入的文本。我使用了 Fortune 代码示例来帮助我,但不得不删除 QDataStream,因为它没有按预期工作。
我希望我的 readCommand 函数从 telnet 客户端连接收集传入字符,一旦它找到换行符或返回以从输入缓冲区中删除键入的命令,删除 /n 和 /r,将其添加到我的字符串列表(commandList),然后回显命令(单独的功能)。这是我到目前为止所得到的:
void MyServer::readCommand()
{
inBuffer += tcpSocketPtr->readAll();
// While newline is present, extract the command
int nextNewlinePos;
while ((nextNewlinePos = inBuffer.indexOf('\n')) > -1) {
commandList << inBuffer.left(nextNewlinePos);
inBuffer.remove(0,nextNewlinePos);
// Get rid of /n /r if present somehow
}
if (commandList.size() > 0)
{
echoCommand();
}
}
在我开始手动剥离 /n 和 /r 等之前,我的直觉告诉我有更好的方法来做到这一点。QTextStream 是要走的路吗?有人可以提供一个简单的(r)替代我想要实现的目标吗?