通过插座包裹
Parcel through socket
我正在尝试通过套接字将包裹发送到 android 应用程序。客户端在 libbinder(c++) 中,服务器是一个必须重建包裹的 android 应用程序。我一直在寻找解决方案有一段时间了,但我不知道如何序列化包裹,然后在服务器端重新构建它。关于如何做到这一点有什么想法吗?
谢谢
我处理数据的代码部分
客户
Parcel parc = Parcel();
double three = 5.5;
parc.writeDouble(three);
unsigned char b[sizeof(parc)];
std::memcpy(b, &parc, sizeof(parc));
那我这样发
send(client, b, sizeof(b), 0);
服务器
private int count
private InputStream in = null;
try {
in = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
try {
count = in.read(bytes);
}catch (IOException e) {
e.printStackTrace();
}
Parcel parcel = Parcel.obtain();
parcel.unmarshall(bytes, 0, bytes.length);
parcel.setDataPosition(0);
double d = parcel.readDouble();
Log.v("----double---", "double" + d);
可以找到一个很好的例子 here。
一般来说,您需要确保您有 类 可用于重建(从地块创建)对象。
我正在尝试通过套接字将包裹发送到 android 应用程序。客户端在 libbinder(c++) 中,服务器是一个必须重建包裹的 android 应用程序。我一直在寻找解决方案有一段时间了,但我不知道如何序列化包裹,然后在服务器端重新构建它。关于如何做到这一点有什么想法吗?
谢谢
我处理数据的代码部分
客户
Parcel parc = Parcel();
double three = 5.5;
parc.writeDouble(three);
unsigned char b[sizeof(parc)];
std::memcpy(b, &parc, sizeof(parc));
那我这样发
send(client, b, sizeof(b), 0);
服务器
private int count
private InputStream in = null;
try {
in = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
try {
count = in.read(bytes);
}catch (IOException e) {
e.printStackTrace();
}
Parcel parcel = Parcel.obtain();
parcel.unmarshall(bytes, 0, bytes.length);
parcel.setDataPosition(0);
double d = parcel.readDouble();
Log.v("----double---", "double" + d);
可以找到一个很好的例子 here。
一般来说,您需要确保您有 类 可用于重建(从地块创建)对象。