Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用TCP套接字在Android和QT之间传输对象?_Android_Qt_Sockets - Fatal编程技术网

如何使用TCP套接字在Android和QT之间传输对象?

如何使用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

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

部分代码如下所示: Android代码:

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上工作的可能性。