在Qt套接字中,写入数据未到达服务器
In Qt socket write data is not reaching the server
编写一个简单的应用程序,从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应用程序的字节数。
注意:在应用程序关闭或套接字关闭时,数据将在安卓应用程序中运行的服务器端读取。
如果需要更多数据,请告诉我。
编辑:
1.在平板电脑和qt-pc应用程序上运行的Android应用程序。两者都在同一网络(intranet)上运行。
2.在单个程序中创建Qtcpscoket
。
3.在android应用程序上创建ServerSocket
,在Qt应用程序上在socket>connectToHost(server_ip,portNo,QIODevice::ReadWrite);
上创建调用onConnected
方法。随后在android应用程序上读取socket->write("Init Connection n");
。
我不能留下评论,所以我会在这里写。您可以使用QIODevice
函数bool QIODevice::waitForBytesWritten(int msecs) [virtual]
而不是bool flush()
。如果你的电脑应用程序停止,那么问题就出在第二次写入数据上。也可以检查函数flush()
返回的值。
相关文章:
- 将相机数据从服务器实时流式传输到客户端
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- Arduino UNO+SIM800L-向服务器发送数据
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- Java 客户端C++服务器数据发送/接收问题
- QTcpSocket 在 RemoteHostClosedError 后重新连接到服务器时无法传输数据
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 如何在C++中使用带有SFML的http reqest从节点.js服务器获取数据?
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- 使用 Broadcast 发出的从节点服务器发送的数据不能被 C++ 套接字 IO 客户端读取
- 如何使用 asio 本地数据报构建回显服务器和客户端?
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 如何使用gRPC在客户端和服务器之间双向发送和接收流元数据
- 通过TCP将数据从C++客户端发送到JSON服务器
- 如何使客户端在将数据写入 C++ 管道之前检查服务器是否完成了从管道的读取操作
- C++中从客户端到服务器的数据传输问题
- Qt TCP服务器不从客户端读取数据
- 如何使用 C++ 中的 cpprestsdk 发布 json 数据并从本地服务器获取响应