gpt4 book ai didi

qt - QT套接字等待用户输入

转载 作者:行者123 更新时间:2023-12-03 12:02:39 34 4
gpt4 key购买 nike

我正在尝试开发具有基本身份验证的简单服务器,
我有以下代码:

socket = new QTcpSocket();
connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()),Qt::DirectConnection);
connect(socket,SIGNAL(disconnected()),this,SLOT(disconnected()),Qt::DirectConnection);
check_user();

.......
并且check_user()是
socket->write("Please enter username:");
socket->flush();
QStringList list;
while (socket->canReadLine())
{
QString data = QString(socket->readLine());
if ( data == "\r\n" )
break;
list.append(data);
}
qDebug()<<list;

但这不必等待用户输入并继续进行。
我希望这个函数等待用户输入一个可变长度的字符串,直到回车。
但是如何?

最佳答案

您可以将插槽连接到套接字的readyRead()信号,并在那里处理输入。
(https://doc.qt.io/qt-5/qiodevice.html#readyRead)
但是要使其正常工作,您将需要在套接字所在的线程中运行一个事件循环。
(https://doc.qt.io/archives/qt-4.8/qeventloop.html)

另一种解决方案是使用套接字的waitForReadyRead(-1)。这将阻塞线程并发出readyRead()信号。如果发出信号,该函数将返回true。但是您还需要一个运行中的事件循环。
(https://doc.qt.io/qt-5/qabstractsocket.html#waitForReadyRead)

关于qt - QT套接字等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62081730/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com