我正在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
最佳答案
首先,所有Qt程序都需要一个应用程序对象来建立框架的许多内部结构。将以下内容作为您的第一条语句:
QCoreApplication app(argc, argv);
其次,在Qt中进行网络编程的普通方法是使用事件处理系统。因为您似乎不需要,所以应该改用阻塞函数,以便操作系统有机会告诉应用程序数据已经到达。
在尝试从套接字读取之前,必须使用
waitForReadyRead()
。阅读文档以获取有关阻塞和非阻塞API函数的更多详细信息。
关于c# - QT QTcpSocket没有收到任何数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24587458/