我是socket编程的新手,我需要澄清一些事情。
您是否需要两个客户端通信之间的服务器?让我解释一下我的意思:
示例1:
Client1 IP地址。你现在可以在没有我的情况下互相交谈。
示例2:
所以我的问题是:在你遇到两个客户在他们之间进行通信之后,你需要一台服务器吗?或者我走错了轨道?
修改
这背后的目的是我希望将我非常简单的手机游戏扩展为多人游戏。例如,我想在PACMAN1手机上显示PACMAN2,反之亦然。
答案 0 :(得分:1)
是的,您可以进行对等通信而无需任何中央服务器,也可以使用sockect或可以与用户ip地址进行通信。
参考 peer to peer
答案 1 :(得分:0)
如果您使用的是TCP套接字编程,则需要中央服务器来促进客户端之间的通信。
原因 - 您无法从每个其他客户端连接到一个客户端上的端口。所有客户端都可以连接到特定端口上的一台服务器,服务器可以促进客户之间的通信。
如果您不再使用套接字编程并使用Messaging等高级功能;可以实现对等通信和向多个客户端广播消息。
编辑:
对于这些reasons特别是可靠性
,我更喜欢TCP over UDP在多人游戏的情况下,您的客户仍然需要连接到专用插槽上的服务器。由于您无论如何都必须使用TCP,因此服务器可以负责在具有客户端ID的客户端之间发送消息。
答案 2 :(得分:0)
理论上可以让两个客户端应用程序直接通信,这可以在局域网中工作,但实际上不太可能。这不起作用的主要原因是在许多情况下,服务器“看到”的客户端1 /客户端2的IP地址实际上是客户端1 /客户端2的网络网关的IP地址,这意味着客户端1无法启动与客户端的连接2.此外,您可以在客户端2计算机(或其网络)上安装防火墙,阻止从客户端1启动的连接。
如果您在XMPP上阅读更多内容,可能会找到有用的信息。
答案 3 :(得分:0)
将Kevin Kal所说的回答: 不,您不一定需要服务器 Client1 和 Client2 相互通信。如果您使用示例中的服务器将必要的数据(IP和端口)发送到 Client1 , Client1 可以通过套接字连接到 Client2 Client2 会倾听(正如凯文所说,严格来说,这会使 Client2 进入服务器。)
如果您想了解有关Java中客户端与客户端连接的更多信息,这是对类似问题的一个非常好的答案: