如何使用TCP套接字在Android和QT之间传输对象?
我是QT编程的新手。现在我有一个项目,将数据从Android手机传输到运行QT socket服务器的本地计算机。我的问题是我知道如何序列化一个对象并从Android手机发送出去,但我不知道如何在QT端接收它。任何帮助都会对我很好,谢谢 部分代码如下所示: Android代码:如何使用TCP套接字在Android和QT之间传输对象?,android,qt,sockets,Android,Qt,Sockets,我是QT编程的新手。现在我有一个项目,将数据从Android手机传输到运行QT socket服务器的本地计算机。我的问题是我知道如何序列化一个对象并从Android手机发送出去,但我不知道如何在QT端接收它。任何帮助都会对我很好,谢谢 部分代码如下所示: Android代码: public void SendDataToNetwork(Infor std_infor) throws IOException { //You run this from the main thread. ByteA
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;
}
void主窗口::startRead()
{
char*rec=new char[client->readBufferSize()];
qDebug()readAll();
qDebug()首先,不要将try和其他异常处理程序与Qt结合使用
我不确定您想做什么,但您可能正在搜索类似的内容。结合a,您可以创建一个数据包,并将其发送到客户端或服务器
发件人:
QByteArray buffer;
QDataStream out(&buffer);
out << someData << someMoreData;
首先,不要将try和其他异常处理程序与Qt结合使用
我不确定您想做什么,但您可能正在搜索类似的内容。结合a,您可以创建一个数据包,并将其发送到客户端或服务器
发件人:
QByteArray buffer;
QDataStream out(&buffer);
out << someData << someMoreData;
我在我的项目中也做了同样的事情,在Qt应用程序和浏览器扩展(Firefox和Chrome扩展)之间传输对象。以下是系统的工作原理:
在Qt端:我使用一个名为的开源项目来实现一个Http服务器并监听一个预定义的端口。在开始真正的工作之前,您还可以检查QtcServer是如何工作的
在扩展中,我使用XmlHttpRequest将消息发送和接收到预定义的端口(为了安全起见,您应该加密/解密消息)。XHR很简单,AFAIK Android也支持它
此外,我建议使用JSON对对象进行序列化/反序列化
如果您需要更多详细信息,可以通过谷歌搜索“Qt Http服务器”。我在我的项目中也做了同样的事情,在Qt应用程序和浏览器扩展(Firefox和Chrome扩展)之间传输对象。以下是系统的工作原理:
在Qt端:我使用一个名为的开源项目来实现一个Http服务器并监听一个预定义的端口。在开始真正的工作之前,您还可以检查QtcServer是如何工作的
在扩展中,我使用XmlHttpRequest将消息发送和接收到预定义的端口(为了安全起见,您应该加密/解密消息)。XHR很简单,AFAIK Android也支持它
此外,我建议使用JSON对对象进行序列化/反序列化
如果您需要更多详细信息,您可以在谷歌上搜索“Qt Http服务器”。您需要使用类似JSON或XML的东西来序列化和反序列化您的对象;它在字节级别或slim上工作的可能性。您需要使用类似JSON或XML的东西来序列化和反序列化您的对象;它在字节级别或slim上工作的可能性。