我必须通过套接字发送大量的xml数据。 xml文件示例(服务器端生成这样的文件):
<message>
<data>
<param1>12345</param1>
<param2>234</param2>
</data>
...
<data>
<param1>321</param1>
<param2>34234</param2>
</data>
</message>
然后客户端收到这样的数据。 客户端必须解析该文件并将参数插入到数据库中。
客户端按部分(字节大小)接收此数据:
byte[] receivedData = new byte[1024];
int receivedBytesLen = streamFromServer.read(receivedData);
我该如何处理这些数据?
- 例如,如果我将所有文件数据读取到客户端的变量中,然后进行处理。我认为这不好 - 可能有问题(大量数据)。
- 将所有数据写入临时文件然后进行处理?创建文件、删除...
- 同时阅读和处理。但 xml 不完整。
- 还有别的事吗?
最佳答案
几年前,我为一家使用体育有线服务的广播公司开发了一种解决方案,其工作方式正是如此。
他们的一些提示:
- 确保每条消息都有唯一的标识符。它可以是像文档元素中的 guid 属性一样简单的东西。
- 多次传输消息(除非这是点对点并且您的解决方案中内置了确认)。客户端应维护成功处理消息的唯一标识符的哈希表,并忽略已处理的重复消息。
- 消息要小。您真的需要将所有“数据”节点都包含在一条消息中吗?您不能将它们作为单独的消息发送吗?
- 使用无效的 XML 字符分隔消息。 CR 和 LF 不起作用。该服务使用 {0x02} 字节来分隔消息。在客户端使用它来查找 XML 文档之间的分隔点。
关于c# - 如何通过套接字发送大的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910794/