两个java程序之间进行通信
我想创建两个 Java 程序,通过消息相互通信。我知道方法客户端<->服务器<->客户端(使用套接字),但我想创建客户端<->客户端通信(没有服务器)。我怎样才能做到呢?
I would like to create two Java programs, that communicate each other by messages. I know method client<->server<->client (using sockets) but I want to create client<->client communication (without server). How could I do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您已经使用套接字实现了基本的客户端/服务器架构,那么您可以做同样的事情。每个客户端既是客户端又是服务器,并且您拥有更多对等类型的结构。
If you have implemented a basic client / server architecture with sockets, then you can do the same thing. Each client is both a client and a server, and you have a more peer to peer type structure.
为了建立客户端→客户端连接,一个客户端可以向服务器发送消息,服务器将该消息传递到另一客户端。该消息将包括客户端 IP、端口以及直接连接到第一个客户端所需的任何内容。
这是 IM 客户端中文件传输和 SIP 中实际媒体流的常用方法。如果客户端位于不同的网络上,请务必注意防火墙问题 - 请参阅 STUN、TURN 和 ICE 遍历。
您可以(重新)使用现有的 Jabber (XMPP) 实现来实现此目的。
To set up the client<->client connection, one client can send a message to the server, which passes the message onto the other client. The message would include client ip, port, whatever is needed to connect directly to the first client.
This is a common method for file transfer in IM clients and the actual media stream in SIP. Be sure to watch out for firewall issues if the clients are on different networks - see STUN, TURN and ICE traversals.
You may be able to (re)use an existing Jabber (XMPP) implementation for this.
这取决于你如何实现,你可以使用网络协议在程序之间进行通信,例如HTTP(很常见)。
对于消息传递,也有不同类型的协议,例如 XML、JSON 或轻量级 Protocol Buffer 等。
It depends on how you implement, you can use network protocol to communicate between programs such as HTTP (quite common).
For the message passing, there are different types of protocol as well, such as XML, JSON or a light-weighted Protocol Buffer, etc.
为此,您可以使用 JXTA 实现。但这并不是一个简单的 API。
You can use a JXTA implementation for this purpose. It's not an easy API although.