QT QTcpSocket没有收到任何数据

时间:2014-07-05 14:35:05

标签: c# c++ qt sockets networking

我在Qt Creator中编写了一个C ++项目,我有一个QTcpSocket。它连接正常,但是bytesAvailable()总是zero,即使我从我用C#编写的另一个项目向它发送数据。我测试了C#项目实际上是通过使用另一个C#项目发送数据,并且它正在正确地发送数据。这是我的代码:

#include <QTcpSocket>
#include <QDebug>

void main()
{
    QTcpSocket *tcpSocket=new QTcpSocket();
    tcpSocket->connectToHost("127.0.0.1",8080);
    while(true)
    {
        if(tcpSocket->bytesAvailable()!=0)
        {
            qDebug()<<tcpSocket<-bytesAvailable();
        }
    }
    tcpSocket->disconnectFromHost();
}

感谢。 :d

2 个答案:

答案 0 :(得分:1)

首先,所有Qt程序都需要一个应用程序对象来设置框架的许多内部。插入以下内容作为您的第一个陈述:

QCoreApplication app(argc, argv);

其次,Qt中普通的网络编程方式是使用事件处理系统。由于您似乎不需要,所以应该使用阻塞函数,以便操作系统有机会告诉您的应用程序数据已到达。

在尝试从套接字读取之前,必须使用waitForReadyRead()

阅读文档以获取有关阻止和非阻塞API函数的更多详细信息。

答案 1 :(得分:0)

你应该替换行

if(tcpSocket->bytesAvailable!=0)

if(tcpSocket->bytesAvailable()!=0)