我使用套接字用java制作了应用程序。我的电脑是服务器,我的手机(安卓)是客户端。只有我想做的是将字符串从手机转发到客户端 PC。
当我配置我的路由器并打开我使用的端口时,一切正常。我不希望每次客户安装我的应用程序时都需要在路由器中打开端口。
我考虑过使用远程服务器来运行我的服务器代码。但我没有找到可以做到这一点的服务器。我不想让我的电脑成为所有客户的服务器。
所有聊天公司在没有开放端口的情况下如何做到这一点?
您必须研究 UPnP。这是 /most/ if not /all/ torrent 客户端用来允许外部连接的内容,而无需转发端口。聊天客户端如何做到这一点是一个不同的场景。他们使用诸如使用 UDP(带有外部服务器)的防火墙打孔之类的黑客攻击http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747197.html看到这个有关 UDP 打孔的详细信息的链接。
另请参阅这篇文章http://www.codeproject.com/Articles/13285/Using-UPnP-for-Programmatic-Port-Forwardings-and-N了解 UPnP 的用法。但这是在 C++ 中,但我想你会明白的。
编辑:http: //4thline.org/projects/cling/我找到了这个。我认为它可以帮助你。
您必须打开端口可能是因为您的路由器防火墙:)。如果您已经打开让我们说端口 9090,那么每个客户端应用程序(Android 手机)都可以连接到它:)。当然,如果有人想在自己的电脑上安装服务器,他们可能会转发一些端口并禁用一些防火墙。如果您想要没有特殊要求的服务器,请查找 VPS。:)