如何将哈希表发送到我的客户端套接字?
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();
我目前正在开发一个小型聊天程序,下一步我想从我的服务器向我的客户发送一个哈希表。
然而,到目前为止我一直在使用
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();