java - 使用 Sockets 在客户端和服务器之间传输 HashMap (JAVA)

标签 java sockets client-server distributed

我正在做一个有多个终端的 JAVA 项目。这些终端充当客户端和服务器。例如,如果有 3 个终端 A、B 和 C。那么在任何给定的时间点,其中一个终端 A 将是发出广播请求的客户端。另外两个终端 B 和 C 将回复。我正在使用套接字使它们进行通信。一旦收到来自所有其他终端的回复,A 将检查 channel 池以查看是否有任何 channel 空闲。它占用免费 channel 并使其可用性为 false。

channelpool是使用HashMAp实现的:

HashMap channelpool = new HashMap();

channelpool = 1=true, 2=true, 3=false, 4=true, 5=true, 6=true, 7=true, 8=true, 9=true, 10=true

所以最初所有的 channel 都是真实的,任何终端都可以使用任何 channel 。但是一旦 channel 被使用,它就会在使用期间设置为 false,然后重置为 true。

现在这个 Hashmap 必须在分布式终端之间共享。它也应该保持最新。我不能在终端之间使用共享资源来存储 HashMap。有人能告诉我一种在终端之间传输 HashMap 的简单方法吗? 如果有人可以将我指向讨论此问题的网站,我将不胜感激。

最佳答案

与通过套接字发送 HashMap 相比,您的问题开始得早得多。您如何确保一次只有一个进程修改 map ?如果两个进程修改映射,您如何以相同的方式为每个进程合并更改?

但要回答您的问题:使用 java.io.ObjectOutputStream 序列化 HashMap ,然后使用 ObjectInputStream 在另一端重建它,应该可以解决问题。

关于java - 使用 Sockets 在客户端和服务器之间传输 HashMap (JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367522/

相关文章:

android - Android Service在后台数据丢失时运行

java - 如何编写一个 UDP 服务器来为来自不同客户端的 n 个并发请求提供服务?

java - 将文件从 Python 服务器发送到 Java 客户端

java - JSF 中的游戏服务器

java - 使用相同的 TCP 端口接受和连接

android - 如何从 ejabberd 服务器获取联系人列表

java - 从文件中读取文本并进行更正(逗号和点)[Java]

java - jsp表单发送数据到servlet而不改变页面

java - Tomcat 内部错误

java - Hibernate 表未映射但表存在