使用C#通过网络读取原始数据包?

时间:2018-10-02 18:03:34

标签: tcp udp packet packet-capture bacnet

我有一种专有的BMS语言,可以通过网络上的特定UDP端口发送其信息。现有界面的制作或维护不是很好,并且功能也很差。

我可以访问代码堆栈,并且不介意创建某些解释功能

我的问题是,应该在程序中接收要解释的原始数据包的最佳方式是什么?我找不到有关如何执行此操作的任何文档,我想尝试以合理的适当方式进行操作。

我基本上需要让我的程序不断嗅探特定端口吗?这样做会对网络或程序造成麻烦吗?

2 个答案:

答案 0 :(得分:0)

您标记了此BACnet。您为什么不尝试使用带有捕获过滤器“ udp端口47808”的Wireshark,看看Wireshark是否以对您有意义的方式公开数据包。 (或您是否已这样做)。如果是bacnet,则绑定到端口47808的普通UDP套接字是可行的方法。请注意,47808-47823是最常见的BACnet“默认”端口。使用cports或其他工具来确切查看您的应用程序绑定到的端口。

答案 1 :(得分:0)

您可以使用一个数据包捕获库-但这具有安全性含义,因此(大部分)您可以避免使用.NET'UdpClient'。

但是!真正的挑战是BACnet数据包的分解和解释,这是最困难的部分。

(现在!/最终)有一个用于BACnet的NuGet软件包-不是我用过的,但这可能是适合您的情况的最佳选择之一。

但是我也建议您也尝试使用(先进且免费的)VTS(可视化测试工具)。