【问题标题】:Send a socket between applications c#在应用程序之间发送套接字 c#
【发布时间】:2011-09-09 09:01:37
【问题描述】:

我想知道是否有一种方法可以让您拥有一个 .net 应用程序名称 appA 在其中接收 tcp 套接字连接,然后根据某些规则将套接字连接发送到另一个 .net 应用程序名为 appB。 我知道这违反了很多安全和良好做法,但如果可能的话会很有趣。

【问题讨论】:

  • 您的意思是... AppA 在给定的 TCP 端口上等待传入连接,并且 - 如果已建立 - 打开与另一个应用程序 AppB 的套接字连接并将有效负载发送给它?当然有可能。
  • 你想在这里解决什么问题?

标签: c# sockets pointers transfer


【解决方案1】:

代理

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

套接字复制

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

通常你会:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-13
      • 2015-05-29
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多