V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
selfcreditgiving
V2EX  ›  问与答

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

  •  
  •   selfcreditgiving · 2020-04-28 21:47:21 +08:00 · 1460 次点击
    这是一个创建于 1662 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    多谢各位大佬指教

    4 条回复    2020-04-29 09:16:08 +08:00
    foam
        1
    foam  
       2020-04-28 23:09:28 +08:00 via Android
    你这是长连接还是短连接。
    短的话,做个透明代理,负责转发就好了。
    长的话,写个接口下发 ip 端口,服务端负责维护配置即可
    billlee
        2
    billlee  
       2020-04-28 23:51:36 +08:00
    xinetd
    unixeno
        3
    unixeno  
       2020-04-29 01:19:40 +08:00 via Android   ❤️ 3
    fd 可以通过 Unix domain socket 传出去,可以参考 runc 的: https://github.com/opencontainers/runc/blob/master/libcontainer/utils/cmsg.go
    Meltdown
        4
    Meltdown  
       2020-04-29 09:16:08 +08:00 via Android
    可以看 Unix 网络编程卷 2 里讲 Unix 域套接字的一章
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1360 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:58 · PVG 01:58 · LAX 09:58 · JFK 12:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.