微耕门禁跨网段搜索代理
解决UDP无法跨网段时的控制器搜索问题
思路:
- 配置已知的搜索指令
- 配置已知的待搜索网段
- 定时使用HTTP发送指令至IP,收集并缓存收到的应答
- 监听收到UDP搜索指令,将未超时的缓存作为应答返回
- 与Http2UDP结合使用,可以实现广播包的返回
注:HTTP2UDP用法
- 设备在A网,Http2UDP在A网,可UDP,业务程序在B网(或互联网),连接http2udp发广播包,返回收到的所有广播包
- 设备在A网,Http2UDP在A网,可UDP,业务程序在B网(或互联网),连接http2udp发UDP包,返回收到的UDP包
- 设备在C网,Http2UDP在A网,不可UDP,先在A网运行ScanProxy进行数据包缓存,业务程序在B网(或互联网),连接http2udp发广播包,ScanProxy返回收到的所有广播包
配置
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"Scan": {
"Minute": 15,
"AliveMinute": 720,
"Command": [
{
"Name": 1994,
"Enable": 1,
"Data": "19 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00",
"ProtocolHead": "1994",
"SNPosition": 4,
"Desc": "SDK"
},
{
"Name": 1794,
"Enable": 1,
"Data": "17 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00",
"ProtocolHead": "1794",
"SNPosition": 4,
"Desc": "SDK"
},
{
"Name": "2010",
"Enable": 1,
"Data": "20 10 7d 2b 07 06 00 00 00 00 00 00 ff ff ff ff 00 00 02 00 ff ff ff ff",
"ProtocolHead": "2011",
"SNPosition": 8,
"Desc": "IPConfigTool"
},
{
"Name": 2410,
"Enable": 1,
"Data": "24 10 f4 33 02 06 00 00 00 00 00 00 ff ff ff ff 00 00 02 00",
"ProtocolHead": "2411",
"SNPosition": 8,
"Desc": "IPConfigTool"
},
{
"Name": 2440,
"Enable": 1,
"Data": "24 40 b3 e4 01 00 00 00 00 00 00 00 ff ff ff ff 00 81 02 00",
"ProtocolHead": "2441",
"SNPosition": 8,
"Desc": "N3000"
}
],
"Timeout": 3,
"NetMask": [
"172.16.2.*:60000",
"172.16.3.*:60000",
"172.16.4.*:60000",
"172.16.5.*:60000",
"192.168.153.*:60000",
"192.168.10.*:60000",
"192.168.156.*:60000"
]
},
"UDPServer": {
"ProtocolHead": [
{
"Name": 1994,
"Enable": 0,
"Heads": [
{
"Pos": 0,
"Hex": "1994"
}
]
},
{
"Name": 1794,
"Enable": 0,
"Heads": [
{
"Pos": 0,
"Hex": "1794"
}
]
},
{
"Name": 2440,
"Enable": 1,
"Sleep": 0,
"Heads": [
{
"Pos": 0,
"Hex": "2440"
},
{
"Pos": 18,
"Hex": "02"
}
]
},
{
"Name": 2410,
"Enable": 1,
"Sleep": 0,
"Heads": [
{
"Pos": 0,
"Hex": "2410"
},
{
"Pos": 18,
"Hex": "02"
}
]
},
{
"Name": 2010,
"Enable": 1,
"Sleep": 5,
"Heads": [
{
"Pos": 0,
"Hex": "2010"
},
{
"Pos": 18,
"Hex": "02"
}
]
}
],
"Timeout": 3,
"IPEndPoint": "192.168.10.211:60000"
},
"AllowedHosts": "*"
}
@@#
效果图
结合http2udp,可以实现下列用途
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗