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

Posted

技术标签:

【中文标题】如何使用java网络编程在四个系统之间创建点对点通信【英文标题】:How to create peer to peer communication among four systems using java network programming 【发布时间】:2014-01-26 16:48:42 【问题描述】:

基本上我想建立如下网络

1.服务器

其他 3 个客户端。使用 java.net 包的 Socket 和服务器套接字类我制作了服务器程序和客户端程序。服务器和客户端之间有两种方式的通信链接。 到这里为止都很酷,但我的目的是在这些客户之间也建立一个通信链接。但我该怎么做。 欢迎提出任何建议。

【问题讨论】:

有很多方法可以做到这一点。太多了,就不一一赘述了。我将从您认为最容易实现的内容开始。 是的,你能提几个吗? 您可以将原始 TCP 与普通 IO 或 NIO、JMS、REST over HTTP、SSH、UDP、SCTP、MPI、MPJ 一起使用。支持这一点的库是消息服务器、网格系统、分布式缓存...... 我只是想用java网络编程。我没有明白你的想法。你能详细说明一下吗。 这是一个非常复杂的主题,有多种选择。没有更多信息,我建议你做plain IO Sockets,除非有你更熟悉的通信技术。 【参考方案1】:

您可以通过 UDP 或 TCP 打孔来使用点对点连接。

【讨论】:

【参考方案2】:

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

选择取决于您的应用程序的性质。

    您的服务器应该在容器中运行吗? 应在本地网络中还是通过 Internet 建立连接? 通过网络传输的数据有多复杂? 您有特殊的性能要求吗?

等等等等

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

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

【讨论】:

是的,我编写了一个打开 Socket 的服务器,客户端连接到它。但我想要使用 java 网络编程的客户端之间的通信链接。我是 java 世界的新手,我是一名学生。 @Intriguing 这听起来像你在做什么。你还没有做网络编程是什么意思?【参考方案3】:

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

【讨论】:

【参考方案4】:

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

    学习本教程无需具备服务器-客户端编程的先验知识,只需要基本熟悉 I/O 操作即可。 本教程首先定义套接字,然后描述客户端的设置,然后开始讨论服务器端处理。 在描述了单服务器、单客户端设置之后,它涉及单服务器-多客户端通信,并且为您需要玩的所有内容提供源代码。

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

【讨论】:

以上是关于如何使用java网络编程在四个系统之间创建点对点通信的主要内容,如果未能解决你的问题,请参考以下文章

GlobalRouting 在组合无线网络和点对点连接时出错

点对点 Java 应用程序 [关闭]

移动应用程序和电脑浏览器之间的点对点通信

区块链点对点交易APP如何交易

我要一份用java网络编程写的点对点的两人聊天程序(TCP和UDP)?

MORPHiS —— 点对点高性能分布式文件系统