0

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

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

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

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

4

2 回答 2

0

您可以使用数据包捕获库 - 但它具有安全含义,因此您可能(在大多数情况下)可以摆脱使用 .NET 'UdpClient'。

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

(现在!/终于)有一个适用于 BACnet 的 NuGet 包 - 我没有使用过它,但这可能是您的案例的最佳选择之一。

但我也建议您也尝试使用(高级和免费)VTS(可视化测试工具)。

您也可以尝试使用 YABE 也使用的 BACnet 堆栈。

于 2019-02-06T14:53:15.747 回答
0

你标记了这个 BACnet。你为什么不试试 Wireshark,它带有一个捕获过滤器“udp 端口​​ 47808”,看看 Wireshark 是否以对你有意义的方式公开数据包。(或者你做过这个)。如果是 bacnet,那么普通的 UDP 套接字,绑定到端口 47808 是要走的路。请注意,47808-47823 是最常见的 BACnet“默认”端口。使用 cports 或其他东西来准确查看您的应用程序绑定到的端口。

于 2018-10-02T18:53:32.480 回答