gpt4 book ai didi

java - Java协议(protocol)栈开发的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:18 25 4
gpt4 key购买 nike

Java 协议(protocol)栈开发的最佳实践是什么?

在这种特定情况下,我的 Java 应用程序将与 PC 外围设备“对话”,其总线将以协议(protocol)格式传输数据。

例子:

假设我的协议(protocol)有一条由一个整数、一个字符串和一个整数列表组成的消息:

class MyMessage { int filed1; String filed2; LinkedList<int> field3;}

我想要的最终产品是可以做到这一点的东西:

// Message to fill
MyMessage msg = new MyMessage();

// InputStream with the data to bind
InputStream stream = myPeripheralBus.getInputSTream();

msg.fill(stream);

// Here, msg fields are filled with the values that were on the InputStream

最佳答案

google protocol buffer 项目符合您的大部分要求。除了 field3 上的 LinkedList 数据结构,但由于 g-p-b 保留了重复值的顺序,我想这对你来说已经足够了。

Protocol Buffer 是一种以高效且可扩展的格式对结构化数据进行编码的方法。 Google 几乎所有的内部 RPC 协议(protocol)和文件格式都使用 Protocol Buffers。

第 1 步,从 http://code.google.com/apis/protocolbuffers/ 安装 g-p-b , 阅读文档。

第 2 步,像这样定义您的 message.proto:

message UserDetail {

required string id = 1;
optional string nick = 2;
repeated double money = 3;

}

第三步,使用protoc编译.proto,生成UserDetail.java文件。

...
public interface UserDetailOrBuilder
extends com.google.protobuf.MessageOrBuilder {

// required string id = 1;
boolean hasId();

String getId();

// optional string nick = 2;
boolean hasNick();

String getNick();

// repeated double money = 3;
java.util.List<java.lang.Double> getMoneyList();

}

public static final class UserDetail extends
com.google.protobuf.GeneratedMessage
implements UserDetailOrBuilder ...

第四步,简单调用

UserDetail.parseFrom(input);
User.UserDetail t.writeTo(output);

g-p-b 有其他语言插件,查看 http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns

关于java - Java协议(protocol)栈开发的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483394/

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