我有一个通过特定端口向我发送数据的设备。数据采用XML格式。
现在我已经做了一个小型控制台应用程序,它监听数据并在屏幕上打印出数据。
现在我的计划是反序列化xml数据,否则我将在数据库中创建insert语句。
1)设备每秒向我发送数据(如果有数据要发送给我)。 2)我不知道该设备将向我发送多少数据。
如何确保在不丢失任何信息的情况下捕获所有数据..
准备讨论了?
C#或VB.NET中的CODE
答案 0 :(得分:1)
根据XML文档,您需要从套接字流中连续读取,直到找到匹配的根端元素;
<?xml version='1.0' encoding='utf-8'?><rootElement> ... </rootElement>
完成,等待下一个文件。
答案 1 :(得分:0)
正如Hans Passant指出的那样,TCP旨在准确交付。要接收连接期间发送的所有tcp数据(听起来像你的情况),请使用我在C# performance methods of receiving data from a socket?的答案中的代码。
收到所有字节后,您可以进行典型的文字转换,例如: string stringData = Encoding.UTF8.GetString(bytes);