UDP/TCP网络转发器程序说明书
1. 程序概述
本程序是一个高性能网络数据转发工具,支持UDP和TCP协议之间的双向数据转发,并具备以下核心功能:
- 协议转换:实现UDP↔TCP协议转换
- 数据转换:支持十六进制/ASCII格式的数据转换规则
- 智能窗口控制:可隐藏/显示/最小化控制台窗口
- 热重载配置:修改配置无需重启程序
- 自动恢复:网络异常自动重连,内存自动管理
2. 系统要求
项目 | 要求 | 备注 |
---|---|---|
运行环境 | .NET 6.0 Desktop Runtime | 下载链接 |
操作系统 | Windows 7/10/11 | 需管理员权限运行 |
网络要求 | TCP/UDP端口访问权限 | 建议关闭防火墙测试 |
3. 配置文件详解
3.1 配置文件示例
# ========== 窗口控制 ========== WINDOW_TYPE=0 # 0=隐藏, 1=正常显示, 2=最小化# ========== 数据转换规则 ========== # 格式: 源数据=目标数据 (支持十六进制和ASCII) 0xAA=0xBB # 十六进制→十六进制 HELLO=WORLD # ASCII→ASCII 0x48656C6C6F=HI # 十六进制→ASCII TEST=0x54455354 # ASCII→十六进制# ========== 网络配置 ========== # UDP监听设置 (必填) UDP_LISTEN=127.0.0.1:5000# TCP转发目标 (必填) TCP_FORWARD=192.168.1.100:6000# TCP监听设置 (可选) #TCP_LISTEN=0.0.0.0:7000# UDP转发目标 (可选) #UDP_FORWARD=255.255.255.255:8000
3.2 配置项说明
配置项 | 说明 | 技术细节 |
---|---|---|
WINDOW_TYPE | 控制台窗口显示模式 | 使用Windows API的ShowWindow函数实现,需要kernel32.dll/user32.dll |
UDP_LISTEN | UDP监听端点 | 使用System.Net.Sockets.UdpClient实现绑定 |
TCP_FORWARD | TCP转发目标 | 使用System.Net.Sockets.TcpClient异步连接 |
转发规则 | 数据转换规则 | 支持多规则匹配,优先使用最先匹配的规则 |
配置热重载机制:程序每5秒检查配置文件修改时间,通过FileSystemWatcher实现无重启更新配置。
4. 核心功能实现
4.1 数据转发架构
+---------------+ | UDP Listener |←[0xAA→0xBB规则] +---------------+↓ +---------------+ | 数据转换引擎 |←[配置文件规则] +---------------+↓ +---------------+ | TCP Forwarder |→[目标服务器] +---------------+
4.2 关键技术点
- 异步IO模型:全程使用async/await异步编程
- 线程安全:使用lock保护共享资源
- 内存管理:自动GC回收,大内存预警(>100MB)
- 错误处理:全局异常捕获+服务自动重启
5. 使用指南
5.1 快速开始
- 安装.NET 6.0运行环境
- 将程序与config.txt放于同一目录
- 修改config.txt配置网络参数
- 直接运行程序
5.2 调试技巧
场景 | 调试方法 |
---|---|
窗口不隐藏 | 检查是否有多实例运行,尝试管理员权限 |
转发失败 | 使用telnet/nc测试端口连通性 |
规则不生效 | 检查数据格式(十六进制需0x前缀) |
窗口隐藏模式警告:WINDOW_TYPE=0时,只能通过任务管理器结束进程。