在应用程序c#之间发送套接字

我想知道是否有一种方法,你有一个.net应用程序名称appA,它接收一个TCP连接器,然后根据一些规则将套接字连接发送到另一个名为appB的.net应用程序。 我知道这违反了许多安全和良好做法,但如果有可能会很有意思。

代理

一种选择是使AppA成为代理。 也就是说,它接受连接,并代表客户端连接到AppB – 并且只是转发数据。

套接字重复

您真正寻找的解决方案是Socket.DuplicateAndClose() (请务必仔细阅读文档)。 这允许您在进程之间传输套接字的控制。

通常你会:

  • 启动AppA,AppB和AppC。
  • 使用远程处理允许AppA与AppB和AppC通信。
  • 与AppA建立连接后,确定将其发送给谁,并且:
    • 复制并关闭AppA中的套接字。
    • 通过远程处理将套接字发送到子进程。
    • 使用Socket(SocketInformation)构造函数在AppB中打开套接字。

无需转发连接,它可以用作中间人

  1. 您收到第一个连接
  2. 处理一些规则
  3. 好的,连接到AppB以及从AppA获得的所有内容,发送到AppB
  4. 如果规则说“不”,请向AppA发送错误