gpt4 book ai didi

c# - 序列化和发送 Protocol Buffers 消息

转载 作者:行者123 更新时间:2023-12-02 22:24:32 25 4
gpt4 key购买 nike

我用 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="jdoe@example.com";
    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;
    }

问题

我正在尝试从 c# 客户端向此 java 服务器发送 protobuf 消息...

  • 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 服务器呢?任何帮助表示感谢!

最佳答案

protobuf-net(又名 ProtoBuf.Serializer.Serialize)写入。如果您有作为 NetworkStream 可用的套接字,您可以直接写入它。如果你真的想要一个byte[],那么使用MemoryStream:

byte[] data;
using(var ms = new MemoryStream()) {
Serializer.Serialize(ms, obj);
data = ms.ToArray();
}

关于c# - 序列化和发送 Protocol Buffers 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13165690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com