编写一个简单的应用程序,以便从PC Qt应用程序与Android设备进行通信。
在我的应用程序首次启动时,成功连接到Android应用程序。
我的信号:
connect(socket, SIGNAL(connected()),this, SLOT(connected()));
connect(socket, SIGNAL(readyRead()),this, SLOT(readyRead()));
void MyApp::connected()
{
qDebug() << "connected...";
socket->write("Init Connection \n");
socket->flush();
}
void MyApp::readyRead()
{
QString readData;
qDebug() << "reading...";
while(socket->bytesAvailable())
readData= socket->readAll();
qDebug()<<"Read Finished";
if(socket->isWritable())
{
qDebug()<<"Yes Writable";
socket->write("New Data");
socket->flush();
}
else
qDebug()<<"No Writable";
}
在connected
方法socket->write
成功且Android应用程序能够读取数据,但在readyRead
中,socket->write
返回写入但未到达的字节数android app。
注意:在应用程序关闭或套接字关闭时,将在Android应用程序中运行的服务器端读取数据。
告诉我是否需要更多数据。
编辑:
1.在平板电脑和qt pc应用程序上运行的Android应用程序。两者都在同一网络(Intranet)上运行。
2.在一个程序中处理Qtcpscoket
。
3.在Android应用上处理ServerSocket
,在Qt app上在socket>connectToHost(server_ip,portNo,QIODevice::ReadWrite);
处理
调用onConnected
方法。随后在Android应用程序中读取socket->write("Init Connection \n");
。
答案 0 :(得分:0)
我不能发表评论,所以我会写在这里。您可以使用QIODevice
函数bool QIODevice::waitForBytesWritten(int msecs) [virtual]
代替bool flush()
。如果您的PC应用程序停止,则问题在于第二次写入您的数据。或者,您可以检查函数flush()
返回的值。