【发布时间】:2014-04-21 23:55:03
【问题描述】:
我有一个简单的 c# 客户端应用程序,它将对象发送到基于 java 的服务器应用程序。 注意:我在 clinet 端使用 protobuf-net。对于这个应用程序,我有一个只有一个字段的简单 .proto 文件,并且 .java 类是由 protoc 编译器生成的。
.proto 文件:
message Person {
required string id = 1;
}
C#客户端发送对象
MemoryStream ms = new MemoryStream();
Person per = new Person();
per.id = "TestId001";
Serializer.Serialize<Person>(ms, per);
byte[] buffer = ms.ToArray();
clientSocket.SendTo(buffer, hostEP);
基于 Java 的服务器接收对象
DataInputStream inputStream=new DataInputStream(socket.getInputStream());
Person person = Person.parseFrom(socket.getInputStream());
System.out.println("Id: " + person.getId());
问题:我没有收到 c# 应用程序发送的序列化消息。即使我没有收到 任何错误。这就是为什么我无法找出问题所在。
【问题讨论】:
-
您是否在客户端类中添加了 ProtoContract 和 ProtoParam 属性?
-
包含你在 C# 和 Java 中使用的 Person 类,并告诉我们在 inputStream 中收到的值。
标签: c# java sockets serialization protobuf-net