Java 简单的服务器/客户端GUI通信

Java 简单的服务器/客户端GUI通信,java,concurrency,Java,Concurrency,我的应用程序设置如下: 服务器侦听来自客户端的传入连接,当客户端连接时,服务器和客户端都会生成一个新线程,监视GUI按钮单击、命令等中的任何更改。。。我的问题是如何让服务器和客户机线程彼此通信并报告各自GUI状态中的任何更改?我已经寻找答案好几天了,但似乎找不到答案。请记住,我刚刚开始学习并发,所以请尽可能详细地回答。您可以使用网络协议在服务器和客户端之间进行通信,例如HTTP,这是非常常见的 对于客户端和服务器之间的消息传递,有不同类型的协议,如XML、JSON或轻量级协议缓冲区等 您可以在X

我的应用程序设置如下:


服务器侦听来自客户端的传入连接,当客户端连接时,服务器和客户端都会生成一个新线程,监视GUI按钮单击、命令等中的任何更改。。。我的问题是如何让服务器和客户机线程彼此通信并报告各自GUI状态中的任何更改?我已经寻找答案好几天了,但似乎找不到答案。请记住,我刚刚开始学习并发,所以请尽可能详细地回答。

您可以使用网络协议在服务器和客户端之间进行通信,例如HTTP,这是非常常见的

对于客户端和服务器之间的消息传递,有不同类型的协议,如XML、JSON或轻量级协议缓冲区等

您可以在XML和JSON上定义自己的定义,并使用自己的定义在两者之间触发所需的操作


一个好的客户机-服务器体系结构不应该依赖于您使用的特定语言,例如Java。客户端应该采用不同的编程语言来接收来自服务器端的消息。

每当事件发生时,您都需要创建某种类型的事件对象,对其进行编码,并通过网络将其发送到另一个进程,该进程随后接收、解码并执行相同的事件


就能够通过网络发送事件对象而言,您需要一种将其编码和解码为字符串/字节的方法。为此,您有几个选项—对于预实现的方法,您可以尝试java Serializable/ObjectOutputStream/ObjectInputStream或XMLEncoder/XMLDecoder。如果事件足够简单,您还可以查看其他XML或JSON库,甚至编写自己的编码器/解码器。

我假设服务器和客户端处于不同的进程中。。。你在网络方面取得了多大进展?现在还不清楚您的问题是关于线程还是进程间通信。服务器和客户端处于不同的进程中,在连接时有各自的线程。线程的目的是监视GUI中的任何更改并报告。假设客户机单击了一个按钮,我需要某种方式通知运行在不同计算机上的服务器线程,客户机单击了一个按钮,并以某种方式更新服务器GUI,反之亦然。因此,我还需要一种从服务器端获取客户端GUI的方法,以及从客户端获取服务器GUI的方法。@user862806:您是否已经决定了要使用的协议,例如套接字:?@user862806:通常您只能从GUI线程本身访问GUI元素-因此您可能希望GUI线程侦听更改,但是,将要发送到服务器的更改通知排队。您可能应该考虑下一步的通信方面,而不是线程。是的,我使用的是带有socketsthanks的客户机/服务器模型,但是我应该如何将XML整合到所有这些中呢?任何帮助都将不胜感激