
我想实现这样的东西 服务端监听一个端口 1,并创建监听另外一个端口 2。 客户端启动访问服务端的端口 1,建立连接 客户访问服务端的端口 2 服务端通过端口 2 转发数据到端口 1 再到客户端。 这样的 TCP 怎么实现呢?语言采用 golang,实现简单吗?
1 baiyi 2019 年 6 月 28 日 我捋了一下,你是想实现个聊天软件吗 |
2 sunny352787 2019 年 6 月 28 日 数据转发? frp ? |
4 rffan OP @sunny352787 感谢大佬。 |
5 glacer 2019 年 6 月 28 日 ssh 端口转发就可以了 |
7 |
8 BingoXuan 2019 年 6 月 28 日 iptable 转发应该可以实现 |
9 exch4nge 2019 年 6 月 28 日 只有我一个人没看明白楼主想说什么吗? |
10 sunny352787 2019 年 6 月 28 日 @rffan 直接用就好啦...重写干啥啊... |
11 rffan OP @sunny352787 没仔细看他实现的语言。我是想顺便学习了一下 TCP 相关的知识。看了也是 golang 实现的,可以直接上了。 |
13 albertofwb 2019 年 6 月 28 日 via Android ngrok 用于将本地端口映射到公网 IP,楼主的需求有成熟的实现,叫做“ TCP 本地端口转发”,具体请看《 lcx 端口转发》 |
14 turi 2019 年 6 月 28 日 你都说的这么清楚了,还不知道怎么实现? 不清楚的地方画个图 ,有时能清楚些 |
15 sujin190 2019 年 6 月 28 日 openvpn + iptable 吧,你这个应该是每一个客户链接端口 2 就创建一个端口 1 到内网本地的链接吧,端口转发 openvpn + iptable 应该是最完整的了,tcp udp,啥都能转发,自己写的话,要么做多路复用要么有个控制连接通知本地打开新连接 |
17 BingoXuan 2019 年 6 月 28 日 @sujin190 我想监听端口 a,把 tcp 数据转换成 udp 数据发到端口 b。同样的,端口 b 返回的 udp 数据也转换为 tcp 数据返回给端口 a。我试过用 socat 来转换,但发现效率不高,容易丢包。最后我自己写了一个多路复用的工具。能用但我想知道有没有其他实现 |
18 zgl263885 2019 年 6 月 28 日 via iPhone Frp 反向代理或者走 v,p,n |
19 sujin190 2019 年 6 月 28 日 via Android @BingoXuan 这样不行吧,tcp 连接是面向连接的,数据都是粘包有序的,你转发给不粘包无序的 udp,到时候数据格式都解不出来了吧,难道你又单独做了分帧和排序?那又是何苦呢,都用 tcp 不好么 |
21 BingoXuan 2019 年 6 月 29 日 @sujin190 我也不想啊,主要是硬件架构很神奇。通过 udp 和 fpga 通讯。由于那个网卡是片内总线构建的,发 udp 过去是不会丢数据,顺序也不会乱。但瓶颈在 arm 端,由于 fpga 发包速度非常快,2w/s。arm 端只能用 c++写的多路复用可以 hold 得住不丢包。 我也不想这样通讯,但技术选型我没话事权。明明可以走共享内存,为什么要走 udp ? |
22 msg7086 2019 年 6 月 29 日 是有什么理由不能用 SSH 隧道吗? |