protobuf 2.4.1 - 将数据从C ++发送到Java
protobuf 2.4.1 - sending data from c++ to Java
我试图在c ++和java之间交换消息,反之亦然,但没有成功。我定义了两条具有联合类型的消息(一条从 c++ 发送到 java,另一条以相反的方式发送)(请参阅随附的 .proto)。
c++ 代码如下:
operational_gui::OperationalMessage message;
message.set_type(operational_gui::OperationalMessage::OWNPOSITIONREPORT);
message.mutable_oprep()->set_latitude(38.5);
message.mutable_oprep()->set_longitude(-9.8);
message.mutable_oprep()->set_heading(25);
message.mutable_oprep()->set_validity(0);
message.SerializeToArray(buf, message.ByteSize());
m_pNamedPipeSocket->write(buf, message.ByteSize());
m_pNamedPipeSocket->flush();
java 代码如下:
int bytes = pipe.read(buffer);
MessagesProtos.OperationalMessage message = MessagesProtos.OperationalMessage.parseFrom(buffer);
switch(message.getType()){
case OWNPOSITIONREPORT:
System.out.println("Response is OwnPositionReport");
break;
case FRIENDPOSITIONREPORT:
System.out.println("Response is FriendPositionReport");
break;
case COMMSTATUSREPORT:
System.out.println("Response is CommStatusReport");
break;
}
通信是通过管道进行的(c++上的QLocalSocket,java端的FileInputStream)
C++发送 33 个字节,java 接收了所有字节,但异常 InvalidProtocolBufferException:协议消息包含无效标记(零)。
有什么提示吗?
提前谢谢。
你可以
试试Qt Jambi:"[...]此外,Qt Jambi还通过提供Qt Jambi生成器,使C++程序员能够轻松地将他们的Qt代码与Java集成。
http://qt-jambi.org/
在Linux系统上,你也可以考虑使用gobjects或使用DBUS(它也有Windows端口)。
相关文章:
- 使用已使用 java 编码的 openssl 解码数据
- 加密在 Windows、C++ 和 Java 中传输中的数据
- Java 客户端C++服务器数据发送/接收问题
- 具有相同数据类型代码的相同逻辑代码在 Java 中传递,但不在 C++ 中传递?
- 如何将通过TCP发送数据的数据从C++转换为Java
- RSA_verify中预期的数据类型是什么,无法验证从 Java 生成的签名
- 将自定义 Java 数据模型传递给我的本机代码
- 为什么像C++和Java这样的语言有一个内置的LinkedList数据结构
- 无法在java(客户端)的套接字上正确写入数据(类),也无法在c ++(服务器)上读取数据(类)
- 如何将加密数据从C 传输到Java
- TCP-Server以数据包结构(非Java客户端)发送文件
- 如何<UserDefinedClass>通过 Swig 将带有数据的 std::vector 传递给 Java?
- 如何在 c++ 和 java 之间通过 udp 有效地发送数据数组
- 使用正确的数据类型转换java中的c++方法逻辑
- 使用 JNI 通过从C++到 Java 的指针返回数据
- protobuf 2.4.1 - 将数据从C ++发送到Java
- NDK:GetByteArrayElements是否将数据从Java复制到C++
- C++和 Java 数据结构的重叠:堆栈"top"与"peek"
- 用c++从internet上检索Java数据
- 将 QByteArray 反序列化为 Java 数据类型