我有一个套接字应用程序,需要支持SOCKS 4和5代理连接,因为我的用户可能在防火墙后面。我正在使用WPF和C#3.5 SP1。在代理的默认Socket类中没有看到任何选项,我必须自己滚动吗?

如果可能,我不希望使用第三方库-使用标准C#套接字启用代理支持有多困难?

最佳答案

这并不困难,但是您必须通读一些RFC。您需要阅读有关Socks v4,Socks v4a和Socks v5的RFC规范。我写了一个库,可以为您完成所有工作,但是如果您愿意编写自己的库,那也很酷。在上一篇文章(Starksoft)中提到了我的图书馆。您可以使用标准的TcpClient对象或Socket连接来实现Socks协议(protocol)。 TcpClient更容易。您只需要在连接到代理服务器后立即发送命令。这些命令将指示代理服务器您有兴趣连接到哪个最终端点。也有UDP Socks连接的规范,但听起来您将不需要它。

您可以在维基百科上找到所有RFC和生成信息。我不能发布更多信息,因为这个疯狂的stackoverflow网站将我作为非常规用户的 super 链接的数量限制为1。很烦人。

http://en.wikipedia.org/wiki/SOCKS

最后,如果您愿意的话,您可以删除我的代码,因为它是在MIT许可下的,我允许您这样做。 :)看一下实现Socks v4协议(protocol)的类Socks4ProxyClient.cs。您最感兴趣的方法位于第282行,名为SendCommand()。您可以在Google Code上找到我的代码。搜索Starksoft。或者,您可以直接访问我的网站,而我可以链接到Google中的源代码。

Socks5的实现有点棘手,可以指定更多选项,并且可以使服务器更加颤抖,但是与Socks4基本上非常相似。

祝您好运,如果您想学习 socks ,就应该自己实现解决方案。所以,对您表示敬意!

  • 本顿
  • 关于proxy - 如何在C#套接字连接中添加代理支持?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1485767/

    10-09 22:11