selfcreditgiving
V2EX  ›  问与答

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

  •  
  •   selfcreditgiving · Apr 28, 2020 · 2155 views
    This topic created in 2380 days ago, the information mentioned may be changed or developed.

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

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

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

    多谢各位大佬指教

    4 replies  •  2020-04-29 09:16:08 +08:00
    foam
    foam
    Apr 28, 2020 via Android
    1
    你这是长连接还是短连接。
    短的话,做个透明代理,负责转发就好了。
    长的话,写个接口下发 ip 端口,服务端负责维护配置即可
    billlee
    billlee
    Apr 28, 2020
    2
    xinetd
    unixeno
    unixeno
    Apr 29, 2020 via Android❤️3
    3
    fd 可以通过 Unix domain socket 传出去,可以参考 runc 的: https://github.com/opencontainers/runc/blob/master/libcontainer/utils/cmsg.go
    Meltdown
    Meltdown
    Apr 29, 2020 via Android
    4
    可以看 Unix 网络编程卷 2 里讲 Unix 域套接字的一章
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4916 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 06:48 · PVG 14:48 · LAX 22:48 · JFK 01:48
    ♥ Do have faith in what you're doing.