我正在创建一个简单的线程 TCP 服务器(基于线程财富服务器示例)。我已将 readyRead 信号连接到我的 readCommand 插槽,并确认在我远程登录到我的服务器并发送了一个字符串(后跟 enter)后 readCommand 函数会触发。
一旦我发送字符串 HELLO,下面的函数就会输出“In readCommand”,然后输出“new inBuffer”总是显示为空(“”)。
void FortuneThread::readCommand()
{
qDebug() << "in readCommand" << endl;
QDataStream in(tcpSocketPtr);
in.setVersion(QDataStream::Qt_4_0);
in >> inBuffer;
qDebug() << "new inBuffer: " << inBuffer << endl;
...
}
如果我打印出 tcpSocket->bytesAvailable(),那么当我通过 telnet 发送更多字符时,我会看到越来越多的字符。我只是没有把它们从套接字中取出……上面的代码是从 Fortune Client 示例中复制的,所以我认为它会起作用。我使用 QDataStream 错了吗?