Qt 如何使我的WaitForBytesWrite呼叫无阻塞?
我有这个功能:Qt 如何使我的WaitForBytesWrite呼叫无阻塞?,qt,qt4,Qt,Qt4,我有这个功能: bool TCPClient::sendPacket(Protocol::Packet &packet) { if(this->tcpSocket->state() == QAbstractSocket::ConnectedState) { std::cout << "writing ..." << std::endl; std::cout << sizeof(BabelPacket) + packe
bool TCPClient::sendPacket(Protocol::Packet &packet)
{
if(this->tcpSocket->state() == QAbstractSocket::ConnectedState)
{
std::cout << "writing ..." << std::endl;
std::cout << sizeof(BabelPacket) + packet.dataLength << std::endl;
this->tcpSocket->write((const char *)&packet, sizeof(Protocol::BabelPacket) + packet.dataLength);
return this->tcpSocket->waitForBytesWritten(-1);
}
else
{
std::cout << "socket close" << std::endl;
return false;
}
}
bool-TCPClient::sendPacket(协议::数据包和数据包)
{
if(this->tcpSocket->state()==QAbstractSocket::ConnectedState)
{
std::cout waitforbytes写入(-1);
}
其他的
{
std::无法侦听BytesWrite()
信号。如果不想阻止GUI,则不在GUI线程上运行阻止操作。您可以创建另一个QThread,并使用QObject::moveToThread(…)
method@MrEricSir你是什么意思?`我连接了(这个->tcpSocket,信号(readyRead()),这个,插槽(readMessage());`但是当服务器向我发送数据包时,readMessage函数不起作用triggered@Rinold因此,每当我需要执行WaitForBytesWrite时,我都需要执行moveToThread?@DimitriDanilov,您应该将对象移动到另一个线程一次,您可以在这里找到。其想法是将长时间运行的操作与GUI线程分离。