C++ Qt TCP套接字在Linux上工作,但在Windows上不工作?
我正在使用QTcpSocket在客户端和服务器之间发送数据 该服务器在Linux上工作得非常好,但在Windows上它只会收到一条消息,之后不会收到更多消息。readyRead再也不会发出了 有人知道问题出在哪里吗 我认为对这个问题很重要的一些准则: 服务器发送: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) {
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不是很有经验