如何使用java网络编程在四个系统之间建立点对点通信

时间:2014-01-26 16:48:42

标签: java networking

基本上我想建立一个如下网络

1.Server

其他3个客户端。使用java.net包的Socket和Server套接字类我制作了Server程序和客户端程序。服务器和客户端之间有双向通信链接。 这里很酷,但我的目的是在这些客户之间创建一个通信链接。但我怎么能这样做。 欢迎任何建议。

4 个答案:

答案 0 :(得分:1)

您可以使用UDP或TCP打孔来使用Peer to Peer连接。

答案 1 :(得分:0)

虽然您可以重新发明轮子,即实现您提到的内容:打开服务器套接字的服务器并等待来自客户端的连接,以某种方式知道服务器所在的客户端并连接到它等等,我建议您使用更高级别的工具。

选择取决于您的申请的性质。

  1. 您的服务器应该在容器中运行吗?
  2. 您的连接应该在本地网络还是通过互联网建立?
  3. 您通过网络传输的数据有多复杂?
  4. 您是否有特殊的性能要求?
  5. 等等

    因此,您可以使用可能的消息(JMS,Kafka等)或网格(Hazelcast,GigaSpaces)等等。

    尝试为我的问题准备答案。尝试找到其他问题并回答它们。然后在这里提出更具体的问题。

答案 2 :(得分:0)

首先,你说1个服务器和3个客户端,所以这是客户端/服务器,而不是点对点。我的建议是使用套接字编程(服务器上的java.net.ServerSocket,或者它周围的框架,如Netty或0MQ),或使用更高级别的HTTP和REST。一旦客户端连接到服务器,只需让服务器向新客户端发送有关旧客户端的所有信息。反之亦然,他们可以直接连接。

答案 3 :(得分:0)

出于以下原因,我强烈建议您从Java文档开始阅读Socket programming tutorial

  1. 无需学习服务器-客户端编程的任何先决知识即可学习本教程,只有对I / O操作的基本了解会有所帮助。
  2. 本教程首先定义套接字,然后描述Client的设置,然后再开始讨论服务器端处理。
  3. 在描述了单服务器,单客户端设置之后,它涉及到单服务器-多客户端通信,并且额外地提供了您需要玩的所有内容的源代码。

我的建议是先下载所有源代码,然后将它们加载到您喜欢的IDE中,然后开始阅读教程并同时跟踪代码。我觉得这个过程真的很有用。