代理后面的Java Socket编程

我写了一个TCP IP套接字程序,工作正常。 但是如果我的服务器或客户端落后于代理,我的套接字程序就不起作用。 那么如何克服这类问题呢。

谢谢Bapi

那么有两个问题需要考虑:

  1. 在代理背后; 和
  2. 在防火墙后面。

防火墙往往更容易:您只需使用端口80(HTTP)或443(HTTPS)。 代理更难,因为直接网络通信往往会从普通PC上禁用。

这就是为什么您经常会发现使用HTTP和/或SSL作为传输媒介的人,因为他们绕过了这些类型的安全问题。 您可以执行推送内容(使用长期连接,也称为Comet技术),因此通常没有真正的技术理由不这样做。

但是如果在不了解您的应用程序和任何相关要求的情况下这是一个好主意,那么很难说这样或那样。

代理通常在应用程序级别工作,而不是在传输级别。 以下是有关Java和代理的一些信息 。

根据代理,您可以做的很少。 如果Proxy被设计为阻止它不直接处理的所有流量,那么你必须通过代理,以某种方式使用它,或者你必须找到一种方法来偷偷通过代理。

例如,许多应用程序都建立在HTTP之上,因为它通常允许通过防火墙,并且通常是代理友好的。 因此,当您知道将在可能存在代理的环境中安装应用程序时,这是一种非常安全的通信方式。

在您的情况下,它取决于您的应用程序使用的端口,这些端口是否通常由任何现有协议的代理处理,您是否使用标准(通常已知)协议或已发明您的拥有,等等。

这个代理是透明代理吗? (也就是说,是否必须配置Web浏览器才能看到它?)它的代理类型决定了应用程序需要如何使用它。 代理是否由您的组织控制?

你说你正在使用端口5018.就像一个实验,你可以尝试使用端口80吗? 仅仅因为您使用端口80并不意味着您必须使用HTTP。 这值得一试,看它是否有帮助。