localsocket服务器没有接收到预读信号

时间:2014-10-21 17:07:50

标签: linux qt linux-kernel

我有一个QLocalserver,我读取非QT客户端发送的数据。在收到一些关键事件后发送数据。这意味着如果我按某个键,数据将通过localsocket发送到服务器,我必须在我的服务器中执行一些操作。

现在,有时即使sendto的返回值为+ ve值即成功,数据也无法到达服务器。只有在按下任何其他键时才接收数据,即使我之后没有将数据发送到套接字。

我正在读取所有字节,直到我的readyread插槽中的while循环结束,但stil不知道问题是什么。任何人都可以帮我解决这个问题。这与准备好的读取信号生成或某些调度问题有关。

就绪读取插槽如下

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);
  }
}

1 个答案:

答案 0 :(得分:0)

没有一些代码很难清楚说什么不对,我做了一些假设:

  1. 由于数据似乎非常小,可能是套接字(客户端)将数据缓冲到特定量,因此不会发送。请参阅" Nagle " -algorithm ...
  2. 你的" readyRead" -slot中有无限循环吗?这可能会在接收数据时导致问题。
  3. 但是,我们会感激一段代码。