开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 238|回复: 5
收起左侧

[已解决] 有没有UDP端口转发例子...

 关闭 [复制链接]
结帖率:92% (107/116)
发表于 2025-6-8 23:45:33 | 显示全部楼层 |阅读模式   重庆市重庆市
111精币
UDP协议跨网转发,  比如A服务器转发到B服务器。

易语言例子或者第三方工具能通过CMD命令执行的也行(那就可以用易语言运行cmd命令了...)

最佳答案

查看完整内容

https://gitee.com/tavenli/port-forward#%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85%E8%AF%B4%E6%98%8E 支持UDP/TCP转发 网页管理 你可以通过post/get请求来实现增加转发。windows的

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:98% (520/532)

签到天数: 1 天

发表于 2025-6-8 23:45:34 | 显示全部楼层   重庆市重庆市
https://gitee.com/tavenli/port-f ... 5%E8%AF%B4%E6%98%8E

支持UDP/TCP转发  网页管理  你可以通过post/get请求来实现增加转发。windows的
回复

使用道具 举报

发表于 2025-6-9 02:02:23 | 显示全部楼层   湖南省娄底市

UDP协议跨网转发,  比如A服务器转发到B服务器。
回复

使用道具 举报

结帖率:63% (22/35)

签到天数: 2 天

发表于 2025-6-9 02:35:34 | 显示全部楼层   广东省汕尾市
# 创建 UdpClient 监听本地 6666 端口
$udpClient = New-Object System.Net.Sockets.UdpClient(6666)

# 设置转发目标地址
$remoteEndpoint = New-Object System.Net.IPEndPoint([IPAddress]::Parse("192.168.1.100"), 6666)

# 开始监听并转发
while ($true) {
    # 接收数据,并获取发送方地址
    $receivedData = $udpClient.Receive([ref]$remoteEndpoint)
   
    # 将数据转发到目标地址
    $udpClient.Send($receivedData, $receivedData.Length, $remoteEndpoint)
}


powerShell脚本,但这个是单线程脚本,循环收一个发一个,不适合并发
回复

使用道具 举报

结帖率:57% (12/21)
发表于 2025-6-11 11:25:07 | 显示全部楼层   浙江省湖州市
### UDP端口转发解决方案

针对您需要的UDP端口跨网转发功能,我提供两种解决方案:一是使用易语言编写UDP转发程序,二是使用第三方工具通过命令行实现。


#### 方案一:易语言实现UDP端口转发

以下是易语言实现UDP端口转发的代码,该程序可以在服务器A上运行,将收到的UDP数据包转发到服务器B:

```易语言
.版本 2
.支持库 spec
.支持库 spec_net

.子程序 _按钮1_被单击, 公开
.局部变量 监听端口, 整数型
.局部变量 目标IP, 文本型
.局部变量 目标端口, 整数型

// 设置转发参数
监听端口 = 12345  // 本地监听的端口
目标IP = "192.168.1.100"  // 目标服务器B的IP地址
目标端口 = 54321  // 目标服务器B的端口

// 创建UDP监听套接字
.局部变量 监听套接字, 整数型
监听套接字 = UDP创建套接字 ()
.如果真 (监听套接字 = 0)
    信息框 ("创建套接字失败", 0, "错误")
    返回 ()
.如果真结束

// 绑定本地端口
.如果真 (UDP绑定套接字 (监听套接字, 监听端口) = 假)
    信息框 ("绑定端口失败", 0, "错误")
    UDP关闭套接字 (监听套接字)
    返回 ()
.如果真结束

// 创建目标UDP套接字
.局部变量 目标套接字, 整数型
目标套接字 = UDP创建套接字 ()
.如果真 (目标套接字 = 0)
    信息框 ("创建目标套接字失败", 0, "错误")
    UDP关闭套接字 (监听套接字)
    返回 ()
.如果真结束

// 连接到目标服务器
.如果真 (UDP连接 (目标套接字, 目标IP, 目标端口) = 假)
    信息框 ("连接目标服务器失败", 0, "错误")
    UDP关闭套接字 (监听套接字)
    UDP关闭套接字 (目标套接字)
    返回 ()
.如果真结束

// 启动接收线程
.局部变量 线程ID, 整数型
线程ID = 启动线程 (, 接收转发线程, 整数型 (监听套接字), 整数型 (目标套接字))
.如果真 (线程ID = 0)
    信息框 ("启动线程失败", 0, "错误")
    UDP关闭套接字 (监听套接字)
    UDP关闭套接字 (目标套接字)
    返回 ()
.如果真结束

信息框 ("UDP转发已启动", 0, "提示")
.子程序尾

.子程序 接收转发线程, 整数型, 整数型, 整数型
.参数 监听套接字, 整数型
.参数 目标套接字, 整数型
.局部变量 数据, 字节集
.局部变量 发送方IP, 文本型
.局部变量 发送方端口, 整数型
.局部变量 收到数据长度, 整数型

// 持续接收和转发数据
.循环判断首 ()
    // 接收数据
    收到数据长度 = UDP接收数据 (监听套接字, 数据, 发送方IP, 发送方端口)
    .如果真 (收到数据长度 <= 0)
        // 接收错误或连接关闭
        延时 (100)  // 防止CPU占用过高
        继续循环
    .如果真结束
   
    // 转发数据到目标服务器
    UDP发送数据 (目标套接字, 数据)
   
    // 可以选择将目标服务器的回复转发回原发送方
    // 这需要创建一个映射表来记录客户Duan信息
.循环判断尾 ()

.子程序尾
```

这段代码实现了基本的UDP转发功能,您可以根据实际需求进行调整:

1. 修改监听端口和目标服务器信息
2. 增加错误处理和日志记录
3. 添加客户Duan连接映射,实现双向转发


#### 方案二:使用第三方工具通过命令行实现

以下是几个可以通过命令行执行的UDP转发工具:

##### 1. socat(跨平台)

socat是一个强大的双向数据传输工具,可以在各种操作系统上使用:

```bash
# Linux/MacOS命令
socat UDP-LISTEN:12345,fork UDP:目标服务器IP:54321

# Windows命令(需要先安装socat)
socat.exe UDP-LISTEN:12345,fork UDP:目标服务器IP:54321
```

##### 2. udp-relay(Node.js工具)

这是一个基于Node.js的UDP转发工具,安装后可以通过命令行使用:

```bash
# 安装(需要先安装Node.js)
npm install -g udp-relay

# 运行命令
udp-relay -l 12345 -r 目标服务器IP:54321
```

##### 3. ncat(nmap工具集的一部分)

ncat是nmap工具集的一部分,可以用于UDP转发:

```bash
# Linux/MacOS命令
ncat -u -l 12345 --sh-exec "ncat -u 目标服务器IP 54321"

# Windows命令(需要先安装nmap)
ncat.exe -u -l 12345 --sh-exec "ncat.exe -u 目标服务器IP 54321"
```

在易语言中调用这些命令可以使用`运行`函数:

```易语言
.版本 2
.支持库 spec

.子程序 _按钮1_被单击
.局部变量 命令, 文本型

// 使用socat示例
命令 = "socat UDP-LISTEN:12345,fork UDP:192.168.1.100:54321"

// 以隐藏窗口方式运行命令
运行 (命令, 假, 1)

信息框 ("UDP转发已启动", 0, "提示")
.子程序尾
```


#### 注意事项

1. 跨网转发需要确保:
   - 服务器A和B之间网络可达
   - 相关端口在防火墙中已开放
   - 服务器A有公网IP或正确配置了端口映射

2. 对于高并发场景,建议使用性能更好的工具或优化易语言代码

3. 考虑添加日志记录功能,便于调试和监控

4. 如果需要双向转发(目标服务器回复也转发回原客户Duan),需要在代码中维护客户Duan连接映射表

以上方案您可以根据实际情况选择,易语言方案更灵活可控,第三方工具方案则更简单快捷。
回复

使用道具 举报

结帖率:92% (107/116)

签到天数: 1 天

 楼主| 发表于 2025-6-12 14:13:52 | 显示全部楼层   重庆市重庆市
appleqc 发表于 2025-6-11 11:25
### UDP端口转发解决方案

针对您需要的UDP端口跨网转发功能,我提供两种解决方案:一是使用易语言编写UDP ...

ai写易代码基本会凭空生成很多命令,实际上没有的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表