我有一个 UDP 服务器正在监听。客户端可以发送二进制数据或 XML 数据(二进制表示为 xml,以便快速攻击)。确定传入数据类型的适当方法是什么?
问问题
285 次
2 回答
1
下载 JDOM 并将其添加到客户端的类路径中。在传入数据上实例化 aSAXBuilder
并尝试从中构建 XML 文档。如果失败,则它是您拥有的二进制数据。
...
SAXBuilder builder = new SAXBuilder();
try {
builder.build(/*data*/);
// You have XML data
} catch (Exception e) {
// You have binary data
}
于 2013-01-10T19:40:52.117 回答
1
您需要一段元数据(标志、标头)来区分两者。一点就够了。更高级别的协议使用更详细的标头来区分不同的类型,例如在 HTTP 中:
Content-Type: application/xml
当然,在您的情况下,因为 UDP 包又小又轻,所以假设第一个字节是类型鉴别器。0
- XML,1
- 二进制。
不要试图通过检查来猜测内容类型。从统计的角度来看,XML 文档和二进制文档有很大的不同,只是比较麻烦而且容易出错。此外,我不建议尝试将传入数据解析为 XML,如果失败则将其视为二进制文件。
于 2013-01-10T19:38:21.803 回答