客户端 - 没有服务器的客户端通信?

roo*_*era 5 java sockets client server

我是套接字编程的新手,我需要澄清一些事情。

两个客户端之间是否需要服务器通信?让我解释一下我的意思:

示例 1:

  1. Client1:服务器,我想和一个client2通话
  2. 服务器:没问题。让我们等他发送连接请求
  3. 客户 2:我在这里。我想和client1谈谈。
  4. 服务器:好的Client1这里是Client2的IP地址。而对于你的 Client2,这里是

客户端 1 IP 地址。你现在可以在没有我的情况下互相交谈。

示例 2:

  1. 客户端 1:服务器,请给客户端 2 发送一条消息:“嘿,客户端 2。你好吗?”
  2. 服务员:好的没问题。向client2发送消息
  3. 客户端 2:服务器感谢发送客户端 1 的消息。给他回复:“嘿,我很好。”
  4. 服务器:发送消息给client1..

所以我的问题是:在你遇到两个客户端之后,你需要一个服务器来在它们之间进行通信吗?还是我完全走错了路?

编辑:

这背后的目的是我想将我非常简单的手机游戏扩展为多人游戏。举个例子,我想在 PACMAN1 手机上显示 PACMAN2,反之亦然。

Rav*_*abu 2

如果使用TCP套接字编程,则需要中央服务器来方便客户端之间的通信。

原因 - 您无法从所有其他客户端连接到一个客户端上的端口。所有客户端都可以通过特定端口连接到一台服务器,服务器可以促进客户端之间的通信。

如果您放弃套接字编程并使用消息传递等高级功能;可以实现对等通信以及向多个客户端广播消息。

编辑:

出于这些原因,尤其是可靠性,我仍然更喜欢 TCP 而不是 UDP

在多人游戏的情况下,您的客户端仍然需要通过专用套接字连接到服务器。由于无论如何你都必须使用 TCP,服务器可以负责在具有客户端 ID 的客户端之间发送消息。