我已经在C#编写此protobuf的消息序列化和发送协议缓冲器消息
C#客户端:
public AddressBook InitializeAdressBook() { Person newContact = new Person(); AddressBook addressBookBuilder = new AddressBook(); Person john = new Person(); john.id=1234; john.name="John Doe"; john.email="[email protected]"; Person.PhoneNumber nr = new Person.PhoneNumber(); nr.number="5554321"; john.phone.Add(nr); addressBookBuilder.person.Add(john); TextBox.Text += ("Client: Initialisiert? " + addressBookBuilder.ToString()) + "\t" + "\n"; TextBox.Text += " Erster Person " + addressBookBuilder.person.First().name + "\t" + "\n"; return addressBookBuilder; }
问题
我想发送protobuf消息AC#客户端这个Java服务器...
Java服务器
public ControllerThread(Socket s){ this.s = s; try { AddressBook adb = AddressBook.parseFrom(s.getInputStream()); System.out.println("Server: Addressbook:" + adb.getPersonCount()); } catch (IOException e) { System.out.println("Server: BufferedReader oder PrintWriter von ThermoClient konnte nicht erstellt werden"); e.printStackTrace(); } }
}
问:
我应该序列化此消息一个字节数组,以便我可以发送它的Java服务器... 不幸的是,方法ProtoBuf.Serializer.Serialize不返回一个字节数组。 那么我怎么能序列化它作为一个字节数组,并将其发送到我的Java服务器?任何帮助赞赏谢谢!
它取决于很多什么通信协议并您的服务器提供 – Vlad
所以,“连载”使用生成器的八位字节流,然后使用适当的库Java来“反序列化”它。如果您从'.protobuf'文件创建Proto对象,则应该为这两种语言自动绑定。请记住,* ProtocolBuffers是二进制*。 – 2012-10-31 19:00:22
服务器使用太protobuf – Kaiser4you