2010-06-02 45 views
0

我有一台设备通过特定的端口向我发送数据。数据采用XML格式。从TCP端口套接字读取XML数据

现在我已经做了一个小的控制台应用程序,它监听数据并在屏幕上打印数据。

现在我的计划是反序列化xml数据,否则我会在数据库中创建insert语句。

1)设备每秒向我发送数据(如果有数据要发送给我)。 2)我不能说设备将发送给我多少数据。

我怎样才能确保捕获所有数据,而无需任何松动的信息..

准备讨论?

代码C#或VB.NET

+0

TCP是为防止数据丢失的明确原因而设计的。你需要解释你为什么认为它不适合你。一秒约为20亿个CPU周期。 – 2010-06-02 12:34:07

回答

1

每XML文档,则需要直到找到一个匹配的根端元素从流套接字汽车无读取;

<?xml version='1.0' encoding='utf-8'?><rootElement> ... </rootElement> 

完成,并等待下一个文件。

+0

你有任何代码片段? – 2010-06-02 11:30:27

0

正如Hans Passant所指出的那样,TCP是为准确交付而设计的。要接收连接期间发送的所有tcp数据(听起来像你的情况),请使用我的答案中的代码C# performance methods of receiving data from a socket?

一旦你收到所有的字节,你可以做典型的文本转换,例如string stringData = Encoding.UTF8.GetString(bytes);