我已經在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