QNativeSocketEngine::write() was not called in QAbstractSocket::ConnectedState
时间: 2023-12-14 21:35:50 浏览: 852
解决返回JSON报错:HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowE
这个问题可能是由于在 `QAbstractSocket` 处于 `ConnectedState` 状态时调用了 `QNativeSocketEngine::write()` 导致的。这个错误一般是由于在写入数据之前没有等待 `QAbstractSocket` 的状态转换完成。
解决这个问题需要在写入数据之前等待 `QAbstractSocket` 的状态转换完成,可以通过连接 `QAbstractSocket` 的 `stateChanged()` 信号来实现。在 `stateChanged()` 信号中判断当前状态是否为 `ConnectedState`,如果是则进行数据写入操作。
以下是示例代码:
```cpp
// 建立连接
socket->connectToHost(host, port);
// 等待连接成功
if (!socket->waitForConnected()) {
// 连接失败
return;
}
// 等待状态转换完成
while (socket->state() != QAbstractSocket::ConnectedState) {
QCoreApplication::processEvents();
}
// 写入数据
socket->write(data);
```
这样就可以避免在 `ConnectedState` 状态下调用 `QNativeSocketEngine::write()` 导致的错误。
阅读全文