【发布时间】:2012-07-25 14:36:08
【问题描述】:
我是 Java 新手,正在编写一个通过 UDP/TCP 使用自己的网络协议的程序。 C中有这样一个包:
struct test_package {
u32 cmd;
u32 args;
u32 flags;
};
以UDP为例,我从DatagramPacket中得到的是字节数据[]。如何将其转换为包结构?
如果在 C 中,如果没有对齐限制,它只是 (struct test_package *)data。
谢谢
【问题讨论】:
-
您需要注意,将 C 结构直接放在线路上是非常糟糕的工程。它引入了对编译器的依赖关系、编译器版本、生效的#pragmas、编译当天使用的编译器选项……不推荐。您必须定义一个网络字节协议并用您的编程语言编写您必须编写的任何内容才能正确实现它。正确执行该操作时 Java 假定的低效率与错误执行时 C 的明显效率无法相提并论。
标签: java networking