通过 TCP 读取 xml 数据
我正在开发一个应用程序,它监听 TCP 以获取来自其他设备的一些 xml 数据。 我正在使用嗅探 C# 代码,我可以嗅探所有数据包。我的问题是,在每个数据包中我都可以在每个数据包中找到一段数据。 像这样:
1 packet from ip41 data:<
2 packet from ip41 data:?xml versi
3 packet from ip41 data:on="1.0"
1 packet from ip35 data:< ?xml
4 packet from ip41 data:encoding="UTF-8
真实的数据看起来像这样:
<?xml version="1.0" encoding="UTF-8"?><alarm><datetime>2010-07-18T11:14:22Z</datetime><textch><textchid>020</textchid></textch><rule>DIR-020</rule><text>020-DIR-Intersection3_Magles_TCS6</text></alarm>
我希望能够像真实数据一样获取字符串中的数据,而不是碎片。 .net 中是否有方法或库可以做到这一点?
i'm developing an application that is listening to tcp to get some xml data coming from other devices.
i'm use sniffing c# code, and i can sniff all the packets. my problem is that in every packet i can find a Piece of the data in every packet.
like this:
1 packet from ip41 data:<
2 packet from ip41 data:?xml versi
3 packet from ip41 data:on="1.0"
1 packet from ip35 data:< ?xml
4 packet from ip41 data:encoding="UTF-8
the real data looks like this:
<?xml version="1.0" encoding="UTF-8"?><alarm><datetime>2010-07-18T11:14:22Z</datetime><textch><textchid>020</textchid></textch><rule>DIR-020</rule><text>020-DIR-Intersection3_Magles_TCS6</text></alarm>
i want to be able to get the data in a string like the real data, not in pieces.
is there is a method or a library in .net that can do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是在嗅探,还是只想连接到设备并获取数据?如果是后者,您可以使用 TcpClient 类来完成您需要的操作。
然后 tcp.GetStream() 将为您提供一些可以输入到您选择的 XML 解析器中的内容。
编辑:这是一个稍微更详细的示例。
请注意,这忽略了您需要遵循的任何协议的问题(例如,如果您通过 HTTP(端口 80)进行通信,则在获取数据之前与服务器通信需要做很多工作(并且,还有另一个类这可以正确地做到这一点;))
Are you sniffing, or do you just want to connect to the device and grab the data? If the latter, you can use the TcpClient class to do what you need.
And then
tcp.GetStream()
will get you something you can feed into your XML parser of choice.Edit: Here's a slightly more detailed sample.
Note that this ignores the problem of any protocols you need to follow (for example, if you're communicating via HTTP (port 80), there's a lot of work involved in talking to the server before getting the data (and, there's another class that does this properly ;))
我通过线程监视一个端口来做到这一点......并按序列号组装它们。
感谢你的帮助
i did it by monitoring one port by thread..and Assembly them by sequence number.
thanks for all your help