Java协议栈开发的最佳实践

发布于 2024-12-05 06:19:24 字数 530 浏览 0 评论 0原文

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

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

示例:

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

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

What are the best practices protocol stack development in Java?

In this specific case, my Java app will be "talking" to a PC peripheral, whose bus will transmit data in a protocol format.

Example:

Imagine that my protocol have a message composed by one integer, a String and a list of integers:

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

What I want as a final product it's something that allows to do that:

// 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风向决定发型 2024-12-12 06:19:24

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

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

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

步骤2,像这样定义你的message.proto:

message UserDetail {

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

}

步骤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 ...

第4步,简单调用

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

gpb有其他语言插件,检查http://code。 google.com/p/protobuf/wiki/ThirdPartyAddOns

google protocol buffer project match most of your requirements .
except the LinkedList data structure on field3 , but since g-p-b preserved the order of the repeated values, i guess that's enough for you.

Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats.

step 1, install g-p-b from http://code.google.com/apis/protocolbuffers/ , read docs.

step 2, define your message.proto like this:

message UserDetail {

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

}

step 3, use protoc compile .proto and generate UserDetail.java file.

...
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 ...

step 4, simple call

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

g-p-b has other language addon, check http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文