2009-08-08 43 views
1

1)如果我使用Socket类连接到服务器,如何通过代理进行连接? 2)如果我通过Web浏览器中的Flash Player运行我的Flex应用程序,并且我的webbrowser被配置为使用代理,套接字连接是否会自动通过代理?在ActionScript 3中通过代理连接套接字

理想情况下,我想不是必须依赖于网络浏览器的设置,并且能够以编程方式从我自己的代码中代理连接。通过直接支持代理,我可以将其编译为桌面AIR应用程序,并仍支持代理连接。此外,可能会出现需要为不同代理创建多个套接字连接的情况。

在Flex Builder 3

由于使用动作脚本3。

回答

6

您可能无法与香草Socket类要做到这一点,但检查出this post by Christian Cantrell of AdobeGoogle cache version)约一个专门的Socket类,他写道,让“通过HTTP代理按照RFC 2817的TCP套接字连接”。开放闪存图表使用His class, the winningly-named RFC2817Socket.asgithub)。正如Christian在他的文章中所说的,有一些注意事项,如果你的服务器不支持RFC 2817,或者某些其他条件不符合,它可能不适用于你。

请注意,在Windows上,Flash Player使用IE的代理设置并忽略您使用的实际浏览器的设置。

+0

太棒了,我懂了它的工作原理!我将不得不启动一些网络监控工具来验证它是否真的通过代理,但基于源代码,我相信它是。 – AaronLS 2009-08-17 17:33:58

+0

仅供参考,我通过一台代理服务器收到了400个错误请求,然后尝试了另一个,一切正常。所以可能是第一个不支持RFC 2817或其他一些问题。 – AaronLS 2009-08-17 17:35:08

2

我已经看了一眼,看起来不可能做到你想做的事。如果您拥有服务器的控制权,您可以通过自己的服务器路由请求......并且Adobe有examples of this using their Flex Data Access services(BlazeDS和LiveCycle)可以通过代理。然后再次,如果你控制自己的服务器,你可以得到它代理无论如何,你喜欢...

但我恐怕似乎没有反正直接在客户端使用ActionScript设置代理。

至于Flash尊重浏览器代理,我不能说我从第一手经验知道,但搜索的证据不好。这里有一篇文章,声称flash won't use your browsers proxy setting for SOCKS on Linux,并建议你需要改变你的iptables。这个adobe bug report也表明它至少不适用于rtmp连接。其他轶事证据表明它对某些浏览器有效有时(对于HTTP请求)。

因此,如果您需要保证连接通过代理,它看起来像您需要通过服务器和代理从您那里路由您的请求。

0

你不能用普通的HTTP或SOCKS代理来做到这一点。 Flex共享浏览器的连接设置。 但是,您仍然可以通过使用他们所称的PHP Proxy,基本上是一个下载另一个网站并将结果转发给您的网站。

+0

我不确定这将适用于套接字连接。我没有提出网址请求。我正在使用套接字并执行readInt和readBytes。 – AaronLS 2009-08-17 15:04:27

+0

那么,一个原始的TCP连接...问题。但是,如果你使用HTTP ... – Havenard 2009-08-17 21:48:05