我有一个 QLocalserver,我可以在其中读取非 QT 客户端发送的数据。接收到一些按键事件后发送数据。这意味着如果我按某个键,数据将通过 localsocket 发送到服务器,我必须在我的服务器中执行一些操作。
现在有时会出现即使sendto的返回值为+ve值即成功,数据也没有到达服务器的情况。仅当按下任何其他键时才会收到数据,即使此后我没有将数据发送到套接字。
我正在读取所有字节,直到在readyread槽中的while循环中结束,但仍然不知道问题是什么。谁能帮我解决这个问题。这是否与就绪读信号生成或某些调度问题有关。
Ready读槽如下
void MainWindow::ReadyRead(void)
{
char cmd[sizeof( struct Data)];
struct Data *Rcv;
while(ui->client->bytesAvailable())
{
ui->client->read(cmd, sizeof(struct Data));
Rcv= ( struct Data *)cmd;
CommandParser(Rcv);
}
}
最佳答案
没有一些代码,很难清楚地说出什么问题,我有一些假设:
- 由于数据看起来很小,可能是套接字(客户端)正在缓冲数据达到特定数量,因此未发送。请参阅“Nagle”算法...
- 你的“readyRead”槽中有无限循环吗?这可能会导致接收数据时出现问题。
不过,如果有一段代码,我们将不胜感激。
关于linux - localsocket服务器未收到readyread信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492330/