java - 如何使用 java 套接字连接到在线服务器

标签 java sockets networking

我花了一些时间学习 Java,并以此为自己构建了一个相当复杂的游戏。我的游戏是一个桌面运行的 Swing 应用程序,在播放后会产生一个进入排行榜的得分值。除了一些安全机制外,游戏几乎已经完成。

起初我从未打算让我的游戏连接到网络,因为“网络”这个词总是让我望而却步。现在我的游戏已经慢慢发展起来,结果实际上比我想象的要好得多,这让我有点想学习如何联网。

在对该主题进行大量研究之后,我决定研究套接字并为自己构建一个简单的客户端/套接字服务器。这两个程序都连接到我的本地机器上,这让我买了这里。

我已经知道允许客户端将分数发送到服务器总是容易受到作弊的影响,但最初这个游戏从未打算用于在线分数发布。相反,我决定让我的游戏代码变得非常难读和困惑,这样可能更容易欺骗/破解别人的程序。 (一厢情愿)。

这个游戏只是一个学习曲线,所以在我看来滥用评分系统只会起到教育作用。

我的问题可能看起来很愚蠢,但它只是试图获得更全面的理解。

我想使用一个套接字发送一个数字,比方说 2371 从我的桌面游戏到托管在随机网络服务器上的 Java 服务器。然后我想让 java 服务器找到这个玩家得分的位置 (2371),然后在网站排行榜上打印得分。

真的只是调整代码URL,然后将socketServer代码上传到虚拟主机空间那么简单吗?

如果是,我要上传什么......java 文件或任何其他文件?

我在研究中也多次读到很多虚拟主机不允许上传带有开放端口的 java 文件。这是正确的吗?

非常感谢大家,这是我一直回避的主题,因此我们将不胜感激所有和任何建议。

最佳答案

您需要的是互联网上可以运行进程(您的 Java 服务器应用程序)的计算机,您的 Java 客户端应用程序可以连接到该进程。因此,您将上传文件(可能是 jar 或一些类文件),并通过您必须运行该进程的任何界面告诉服务器。然后,该服务器应用程序可以保存每个人的分数并将它们保存到磁盘以及您需要的任何其他内容。

I have also read many times in my research that alot of webhosts dont allow the uploading of java files with open ports. Is this correct?

这是正确的。您需要租用一台服务器(如果您自己没有服务器,可以将其连接到自己的互联网连接上),一个简单的网络托管公司将不允许您托管自己的运行进程。

Instead I have decided to make my game code so damn unreadable and messy that it may just be easier to cheat/crack someone elses program. (wishful thinking).

我不确定这是不是在开玩笑,但确实有像 ProGuard 这样的源代码混淆器可以做到这一点。

如果您真的想防止人们使用他们自己修改过的客户端将分数简单地写入服务器,那么您必须让服务器进程本身处理一些游戏逻辑。当然,有人仍然可以更进一步,创建一个机器人或任何他们需要作弊的东西,并列出他们的虚假分数。

关于java - 如何使用 java 套接字连接到在线服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935243/

相关文章:

python - python中卡住的框架验证条件

c# - 监控传出互联网流量

java - 如何使 Java 应用程序的内存高效?

MAC OSX 上的 Python IPv6 多播错误

c - 套接字地址已在使用中 - 一开始忘记了 SO_REUSEADDR

java - 我可以强制 AES 不对某些字节进行加密吗?

c++ - 创建一个 C++ 程序来处理电话线(固定电话)上的来电

java - MapReduce中First Reduce Task作为<Key Value>对的输出值

java - 如何将一个类的 "Context"使用到另一个类中 - Android

java - 安卓代码质量