在C中如果你有一个特定类型的数据包,你通常做的是定义一些结构并将char*转换为指向结构的指针.在此之后,您可以直接以编程方式访问网络数据包中的所有数据字段.像这样:
struct rdp_header { int version; char serverId[20]; };
获得网络数据包后,您可以快速执行以下操作:
char * packet; // receive packet rdp_header * pckt = (rdp_header * packet); printf("Servername : %20.20s\n", pckt.serverId);
这种技术对基于UDP的协议非常有用,并且允许使用非常少的代码进行非常快速和非常有效的数据包解析和发送,以及简单的错误处理(只需检查数据包的长度).在java中有同样的,同样快速的方法吗?或者你被迫使用基于流的技术?