You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制仅Qt应用向搭载Xilinx TEMAC IP的Arty A7-100T发送UDP数据包?

解决仅Qt应用向FPGA发送有效数据的方案

核心问题说明

QAbstractSocket::bind的DontShareAddress参数是用来阻止其他程序绑定到本地的同一端口,但你的问题是其他程序通过不同的本地端口向FPGA的IP/端口发送数据,所以这个设置无法解决问题。下面是针对性的解决方法:

1. FPGA固件层面(最可靠)

  • 给以太网通信添加自定义协议校验:在FPGA的TEMAC处理逻辑中,只接收符合特定格式的数据包,比如每个有效命令必须携带固定前缀(如0xAA 0xBB)+命令字节+校验位(如CRC8)。只有当FPGA收到完整匹配的帧时,才执行LED切换操作,其他任何不符合格式的数据包直接丢弃。
  • 使用非标准端口:把FPGA监听的端口设置为不常用的端口(比如49152~65535范围内的某个固定值,比如56789),避免被系统或第三方软件的常规扫描命中。

2. Windows系统层面(拦截非法通信)

  • 配置Windows防火墙规则:
    1. 打开「Windows Defender防火墙高级设置」
    2. 新建出站规则,选择「程序」,指定你的Qt应用的.exe文件路径
    3. 选择「允许连接」,然后在「远程IP地址」中添加FPGA的固定IP,「远程端口」指定FPGA监听的端口
    4. 完成规则创建后,其他程序向该IP/端口发送的数据包会被防火墙拦截
  • 排查后台程序:关闭局域网扫描类工具(如设备管理软件、部分杀毒软件的网络探测功能、Windows网络发现),测试是否还会出现误触发,找到根源程序后禁用或添加排除规则。

3. Qt应用层面(优化命令逻辑)

  • 替换单字节命令为结构化命令帧:比如发送0xAA 0xBB 0x01 0xXX(0x01是切换LED的命令,0xXX是CRC校验值),而不是单独发送一个字节。这样即使有其他程序发送随机字节,也几乎不可能匹配完整的命令帧格式。

内容的提问来源于stack exchange,提问作者bowlcutty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:47:11