如何将哈希表发送到我的客户端套接字?

How can I send a hashtable to my clientsocket?

我目前正在开发一个小型聊天程序,下一步我想从我的服务器向我的客户发送一个哈希表。

然而,到目前为止我一直在使用

PrintWriter out = new PrintWriter(socket.getOutputStream());

在我的服务器 class 中,并且

Scanner in = new Scanner(socket.getInputStream());

在我的客户端 class 中,它们用于将消息以字符串形式从两个套接字传输到连接的另一端。

这不再适用于哈希表,因为它们不是原始数据类型。

我必须使用什么才能将我的哈希表完全发送给我的客户?

由于 Hashtable 实现了 java.io.Serializable 接口,您可以序列化对象并通过套接字的输出流发送它:

Hashtable table = new Hashtable(); // TODO: avoid raw types
...
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(table);
oos.close();

要读取客户端中的对象,您需要使用ObjectInputStream:

InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
Hashtable table = (Hashtable) ois.readObject();