1

我正在使用 WCF 的 netTcpBinding,它直接连接到一个端点,并且似乎对 socks 代理一无所知。

我需要使用代理,因为我的大多数客户端都不允许直接出站连接,并且始终强制使用 socks 代理。

  • 我的第一个想法是配置 .net 框架来做到这一点,所以我编辑了 machine.config 文件如下,但它似乎只适用于 http 代理(不是袜子)

    <system.net>
    <defaultProxy enabled="true">
      <proxy usesystemdefault="False" proxyaddress="foo:1080" bypassonlocal="True"/>
      <module />
    </defaultProxy>
    </system.net>
    
  • 我的第二个选择是实现从 netTcpBinding 继承的自定义绑定,并且仅覆盖连接逻辑以添加代理代码。

    我已经分解了 System.ServiceModel 程序集,不幸的是,很多类都标记为内部类(包括 SocketConnectionInitiator、ConnectionPoolHelper、ClientFramingDuplexSessionChannel 和 FramingDuplexSessionChannel,可能还有其他类)

    这使得创建自定义 netTcpBinding 成为一项巨大的工作,而且在交付新版本的 .net 框架时可能会导致一些问题。

  • 另一个想法是将一些代码直接注入到 Socket.Connect() 方法中。这很容易实现,但我对修改.net框架的内部代码不是很有信心。此外,虽然套接字类没有标记为密封,但我害怕破坏某些东西,尤其是在框架的后期版本中。

  • 我现在的最后一个想法:我可以创建一个小代理工具,与我的软件在同一台计算机上运行,​​它会自动连接到公司的 socks 代理,并向真正的 socks 代理发出良好的“连接服务器”命令.

我认为后一种选择更好,但我很想听听其他人的意见。

你怎么看?

4

1 回答 1

0

使用 SocksCap、WideCap 或其他东西,如果你可以将它安装到客户端机器上

或者实现/找到一些 Socks->HTTP 代理并使用它。

于 2009-11-29T08:34:40.240 回答