如何使用Java套接字连接到在线服务器。

3
我花了一些时间学习Java,并在此过程中构建了一个相当复杂的游戏。我的游戏是一个桌面应用程序,通过运行swing应用程序,在玩游戏后会得到一个分数值,该分数值将被输入排行榜。游戏基本上已经完成,除了一些安全机制。
起初,我并没有打算将我的游戏连接到网络,因为“网络”这个词总是让我望而却步。现在我的游戏已经慢慢发展壮大,它实际上比我想象的要好得多,这让我有点想学习如何进行网络编程。
在对这个主题进行大量研究之后,我决定研究套接字并构建一个简单的客户端/套接字服务器。两个程序都在我的本地计算机上连接,这就带领我来到了这里。
我已经知道允许客户端向服务器发送分数总是容易受到欺骗,但最初这个游戏并不是为了在线发布得分而设计的。相反,我决定使我的游戏代码非常难以阅读和混乱,以至于可能更容易欺骗/破解别人的程序。(痴心妄想)。
这个游戏只是一个学习曲线,所以在我看来,滥用得分系统只会起到教育作用。
我的问题可能看起来很傻,但这只是为了更全面地了解。
我想使用套接字将一个数字(比如2371)从我的桌面游戏发送到托管在随机web服务器上的Java服务器。然后,我希望Java服务器找到这个玩家得分(2371)的位置,然后在网站排行榜上打印得分。
这真的像调整代码URL那样简单吗?然后上传socketServer代码到Web托管空间?
如果是这样,我要上传什么……一个.java文件还是其他文件?
我在研究中也多次阅读到许多Web主机不允许上传具有开放端口的Java文件。这是正确的吗?
非常感谢,这是一个我一直回避的话题,所以任何建议都将不胜感激。

我不确定“相反,我决定让我的游戏代码变得非常难以阅读和混乱,这样可能更容易作弊/破解别人的程序(一厢情愿的想法)。”是否是一个玩笑话,但是像ProGuard这样的源代码混淆器确实可以做到这一点。 - NESPowerGlove
你没有上传一个 .java 文件 ;) 可能更像是发送一个整数和一些标识,就这样。 - flotothemoon
@NESPowerGlove:我知道有代码混淆器,但由于在学习编程时直接跳进程序,我的代码本来就很难读懂,不过还是谢谢你。 - dazbrad
@1337:我不会上传.java文件!我可以问一下是什么读取了标识和整数值吗?读取这些值的是serverSocket吗? - dazbrad
1
@dazbrad 是的,服务器套接字应该读取这些值。 - flotothemoon
1个回答

2
你需要一台连接互联网的计算机来运行一个进程(你的Java服务器应用程序),你的Java客户端应用程序可以连接到此计算机。因此,你需要上传文件(也许是一个jar文件或一些类文件),并通过任何接口通知服务器运行这个进程。这个服务器应用程序可以保存每个人的分数,并将其保存到磁盘和其他所需位置。
我在研究中也多次阅读到,很多Web主机不允许上传带有开放端口的Java文件。确实如此。如果你没有一个自己可以放在自己的互联网连接上的服务器,一个简单的 Web 主机公司将不允许你托管自己的正在运行的进程。
即使你决定使自己的代码难以阅读和混乱,这样也会更容易作弊或破解别人的程序(幻想)。但是,有一些源代码混淆器,例如ProGuard,可以实现这一点。如果你真的想防止人们使用自己修改的客户端将分数写出来,则必须让游戏的某些逻辑由服务器进程本身处理。当然,某些人仍然可以进一步制作机器人或任何其他他们需要的东西来欺骗并列出虚假的分数。

谢谢,这解决了我的一些疑问。我能问一下,你提到“通过任何接口告诉服务器运行进程”,具体是什么意思? - dazbrad
1
也许你可以通过ssh连接到服务器并输入"java -jar MyServerApplication.jar"命令来启动应用程序。如果服务器由一家拥有良好Web界面并了解jar文件的公司托管,你可以直接登录你在他们那里的账户,他们可能会提供一个“运行Java应用程序”按钮或类似的功能。 - NESPowerGlove
谢谢你对这个问题的建议,我会四处寻找网站托管服务并看看有哪些选择。再次感谢。 - dazbrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接