我有一个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);
}
}
最佳答案
没有一些代码,很难明确地说出什么问题,我有一些假设:
由于数据似乎很小,可能是套接字(客户端)正在将数据缓冲到特定数量,因此无法发送。参见“ Nagle”算法。
您的“ readyRead”插槽中是否存在无限循环?这可能会导致在接收数据时出现问题。
一段代码将不胜感激。
关于linux - localsocket服务器未收到readyread信号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26492330/