Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt TCP套接字在Linux上工作,但在Windows上不工作?_C++_Linux_Qt_Sockets_Tcp - Fatal编程技术网

C++ Qt TCP套接字在Linux上工作,但在Windows上不工作?

C++ Qt TCP套接字在Linux上工作,但在Windows上不工作?,c++,linux,qt,sockets,tcp,C++,Linux,Qt,Sockets,Tcp,我正在使用QTcpSocket在客户端和服务器之间发送数据 该服务器在Linux上工作得非常好,但在Windows上它只会收到一条消息,之后不会收到更多消息。readyRead再也不会发出了 有人知道问题出在哪里吗 我认为对这个问题很重要的一些准则: 服务器发送: void Server::sendData(Client *client, QString data) { if (client->socketDescriptor == socketDescriptor) {

我正在使用QTcpSocket在客户端和服务器之间发送数据

该服务器在Linux上工作得非常好,但在Windows上它只会收到一条消息,之后不会收到更多消息。readyRead再也不会发出了

有人知道问题出在哪里吗

我认为对这个问题很重要的一些准则:

服务器发送:

void Server::sendData(Client *client, QString data)
{
    if (client->socketDescriptor == socketDescriptor) {
        data = data + CRLF;

//      Have also tried to use socket->flush(), same problem.
        socket->write(data.toUtf8());
        socket->waitForBytesWritten();
    }
}
服务器接收:

// this slot is connected to the readyRead() signal
void Server::readData()
{
    // on Windows this is called exactly once for each client
    // every additional messages just don't seem to arrive at the server
    QString msg = QString(socket->readAll());
    emit receivedData(this, &msg);
}

我只是不明白为什么它可以在Linux上运行,但不能在windows上运行…

但也许客户端不再响应了?客户端发生了什么?您确定问题出在服务器而不是客户端吗?你能确认客户端正在发送数据吗?使用诸如确认数据传输正确的工具。谢谢,我终于找到了答案。问题是我的套接字与包含它的对象不在同一个线程中。一个简单的套接字->移动到线程这个->线程解决了这个问题。然而,我不太清楚为什么。。。我对Qt不是很有经验