0

我正在 Qt 中构建一个 telnet 服务器应用程序,当我从 linux telnet 客户端连接时,输出看起来很棒。例如,向我的控制台发送 "A" << endl << "B" << endl << "C" 如下所示:

A
B
C

现在,当我从 Windows telnet 客户端连接时,我看到

A
 B
  C

显然 Qt 的 endl 只发送 '\n'。有一个简单的解决方案吗?如果我用“\r\n”替换endl,我现在会搞乱linux客户端吗?我也必须强制冲洗吗?

这是我用来发送到我的 telnet 客户端的实际代码:

QString block;
QTextStream out(&block, QIODevice::WriteOnly);
out << "Valid commands are: " << endl
    << "  help         Print this list" << endl
    << "  version      Print this version" << endl
    << "  clientcount  Show the number of active telnet clients" << endl
    << "  logrotate    Rotate the event log file" << endl
    << "  shutdown     Initiate shutdown secast" << endl
    << "  quit         Disconnect your telnet session" << endl
    << "  stop         Shutdown secast" << endl;
tcpSocketPtr->write(block.toUtf8());
4

1 回答 1

0

您可以简单地删除并直接在此处QTextStream写入:QString

QString block = QString("Valid commands are: \n")
            + "  help         Print this list\n"
            + "  version      Print this version\n"
            + "  clientcount  Show the number of active telnet clients\n"
            + "  logrotate    Rotate the event log file\n"
            + "  shutdown     Initiate shutdown secast\n"
            + "  quit         Disconnect your telnet session\n"
            + "  stop         Shutdown secast\n";

tcpSocketPtr->write(block.toUtf8());

不过,根据您的评论,您似乎使用了一些旧的 DOS 客户端(在 Windows 上!),它需要“\r\n”。在这种情况下,我会为此发送“\r\n”,但对于 Linux,只发送通常的“\n”。在 Linux 上发送回车并不是一个很好的做法,而不仅仅是换行,即使 "\r\n" 似乎在 Linux 上工作。

于 2013-10-06T00:48:19.467 回答