怎么把 socket 连接 管道(转交给)给另一个程序使用?

2020-04-28 21:47:21 +08:00
 selfcreditgiving

比如 服务器上起了一个 1888 端口, 客户端 A 连上了,把 A 连上的 socket 转给服务器上的 A 程序, 客户端 B 连上了, 把 B socket 再转给 B 程序,依此类推这样的。

因为不同 socket 他们的业务逻辑非常不同,而且后续会不断的增加,所以想设计成这样分开的程序(每个客户端用不同的端口,感觉不太方便,一是要开放很多服务器的端口、二是每个客户端都要设置不同的端口号,维护起来怕有点麻烦)。

希望使用 node 或 go 来实现,其它语言的示例也是可以的。

多谢各位大佬指教

1354 次点击
所在节点    问与答
4 条回复
foam
2020-04-28 23:09:28 +08:00
你这是长连接还是短连接。
短的话,做个透明代理,负责转发就好了。
长的话,写个接口下发 ip 端口,服务端负责维护配置即可
billlee
2020-04-28 23:51:36 +08:00
xinetd
unixeno
2020-04-29 01:19:40 +08:00
fd 可以通过 Unix domain socket 传出去,可以参考 runc 的: https://github.com/opencontainers/runc/blob/master/libcontainer/utils/cmsg.go
Meltdown
2020-04-29 09:16:08 +08:00
可以看 Unix 网络编程卷 2 里讲 Unix 域套接字的一章

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX