【问题标题】:How to transfer object using TCP socket between Android and QT?如何在 Android 和 QT 之间使用 TCP 套接字传输对象?
【发布时间】:2013-07-20 04:30:43
【问题描述】:

我是 QT 编程的新手。现在我有一个项目,它将数据从 Android 手机传输到运行 QT 套接字服务器的本地计算机。我的问题是我知道如何序列化一个对象并将其从 Android 手机发送出去,但我不知道如何在 QT 端接收它。任何帮助都会对我有很大帮助,谢谢!

部分代码如下: 安卓代码:

public void SendDataToNetwork(Infor std_infor) throws IOException { //You run this from the main thread.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(std_infor);
oos.close();
byte[] bytes = baos.toByteArray();
try {
if (nsocket.isConnected()) {
nos.write(bytes);
} else {
Log.i("AsyncTask", "SendDataToNetwork: Cannot send message. Socket is closed");
}
} catch (Exception e) {
Log.i("AsyncTask", "SendDataToNetwork: Message send failed. Caught an exception");
}
}
}

std_infor 是一个包含四个字符串变量的对象。

Qt 服务器:

void MainWindow::startRead()
{
char* rec = new char[client->readBufferSize()];
qDebug()<<client->readBufferSize();
QByteArray data = client->readAll();
qDebug()<<data;
}

【问题讨论】:

  • 您需要使用 JSON 或 XML 之类的东西来序列化和反序列化您的对象;它在字节级别或苗条级别上工作的机会。

标签: android qt sockets


【解决方案1】:

我在我的项目中做了同样的事情,在 Qt 应用程序和浏览器扩展(Firefox 和 Chrome 扩展)之间传输对象。以下是系统的工作原理:

在 Qt End:我使用一个名为 QHttpServer 的开源项目来实现一个 Http Server 并监听一个预定义的端口。在开始实际工作之前,您还可以查看 A simple HTTP Server 以了解 QTcpServer 的工作原理。

在扩展中,我使用 XmlHttpRequest 向该预定义端口发送和接收消息(您应该加密/解密消息以确保安全)。 XHR 很简单,AFAIK Android 也支持。

另外,我建议使用 JSON 来序列化/反序列化您的对象。

如果您需要更多详细信息,您可以搜索“Qt Http Server”。

【讨论】:

    【解决方案2】:

    首先不要将 try 和其他异常处理程序与 Qt 结合使用。

    我不确定您想要做什么,但您可能正在搜索类似QDataStream 的内容。结合QByteArray,您可以创建一个数据包,您可以将其发送给您的客户端或服务器。

    发件人:

    QByteArray buffer;
    QDataStream out(&buffer);
    out << someData << someMoreData;
    

    接收者:

    QByteArray buffer;
    QDataStream in(&buffer);
    in >> someData >> someMoreData;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 2012-07-12
      • 2021-08-12
      相关资源
      最近更新 更多