gpt4 book ai didi

Java - 简单网络

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:02 28 4
gpt4 key购买 nike

在阅读了几个关于网络的网页之后,为了尝试了解基本的网络,(我以前从未做过网络)我制作了一些旨在制作一些简单聊天室的类(class)。以下类(class)将在下面发布:

聊天服务器:http://paste.strictfp.com/32591 ((最近编辑)创建等待人们连接到它的实际服务器,在这种情况下,通过端口 9045)

聊天 session :http://paste.strictfp.com/32583 (当找到客户端时,从上面的服务器代码中,它会创建一个新 session ,它基本上只是读取客户端发送的消息)

聊天客户端:http://paste.strictfp.com/32584 (允许客户端写入服务器)

服务器运行器:http://paste.strictfp.com/32585 (运行服务器的主要方法)

ClientRunner:http://paste.strictfp.com/32586 (运行客户端的主要方法,它连接到服务器)

我知道上面的代码不是最好的,考虑到我没有添加任何检查来查看套接字/客户端是否断开连接,或者有什么东西被中断了。但话又说回来,这只是一种练习,目的是帮助我尝试和掌握网络的概念。

所以这 5 个类一起工作很好,但我有一个问题/疑虑,如果得到回答,将不胜感激:

如何从服务器向客户端发送消息?

我问的原因是因为我想制作一个简单的多人井字游戏,其中将有一个服务器和 2 个客户端(均代表玩家),基本上是我的想法是每当客户点击按钮时,我都会向服务器发送一条消息。然后我会将消息发回给两个客户,以便修改他们的两个游戏。由于我缺乏网络知识,我对它的工作原理有点困惑。如果您不将我重定向到另一个 URL,我将不胜感激,除非非常非常非常简单,因为我更喜欢人们用最简单的术语向我解释。如果有人可以帮助我,我将不胜感激。

最佳答案

“服务器”这个词有两个容易混淆的含义:

  1. 服务器不在客户处(即它是每个客户/用户连接到的中心枢纽)
  2. 服务器是接收请求的服务器。服务器从不发起对话,它们总是响应传入的消息。

所以您要做的是将您的服务器变成客户端(ChatClient 将变成服务器)。

这解释了为什么这个看似简单的任务如此困难:服务器并不是要突然与客户端对话。现实世界的例子:您银行的一名职员突然出现在您家门口,并试图向您推销您家中的东西。很奇怪,不是吗?

解决方案:

  1. 您可以让客户端每隔几分钟向服务器发送一条消息。消息将是“有新东西吗?”。这称为“轮询”。
  2. 您可以让客户端发送一条消息并让它等待答复。服务器不需要立即回复消息。但是,您需要处理超时。但是客户可以发送一个“有新东西吗?”然后等到它得到回复。如果将它移到一个线程中,客户端可以在等待答案时做其他事情。这是轮询,但它是被动的。
  3. 您可以使用双向协议(protocol),例如 WebSocket .
  4. 您可以将您的客户端变成一个真正的服务器:打开一个服务器套接字,让中央集线器知道端口号并让它连接到那里以更新您的客户端。虽然这可行,但它需要两个连接,而且它们有点贵。这适用于少量客户,但随着数量的增长,它最终会成为一个问题。

关于Java - 简单网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110444/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com