[英]Passing TreeMap object over Socket (from server to client)
是否可以通过套接字从服务器向客户端发送TreeMap(包含键和值)?
写入套接字与写入文件没有什么不同。 ObjectOutputStream
类为我们抽象了该层。 因此,您可以测试您的序列化在文件IO上是否运行顺利; 那么写入Socket
非常容易。
TreeMap<YourKeyClass, YourValueClass> treeMap =
new TreeMap<>();
buildMyTree(treeMap);
FileOutputStream fout = new FileOutputStream("path/to/your/file.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(treeMap);
读回对象以检查反序列化:
FileInputStream fin = new FileInputStream("path/to/your/file.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
TreeMap<YourKeyClass, YourValueClass> treeMapFromFile = ois.readObject();
TreeMap
是可序列化的。 只要YourValueClass
不具有妨碍序列化的复杂结构,一切都可以很好地运行。 例如,您可能具有对YourValueClass
其他对象的递归引用,在这种情况下,您必须在自己的writeObject
和readObject
实现上进行工作以进行序列化。
因此,进行读取和写入检查非常重要,以确保一切都按照您的结构运行。
一旦确定序列化可以正常进行,请转到套接字编程。 在移至套接字之前,请确保序列化工作正常,这一点非常重要,因为如果您错过了序列化的要点,那么在套接字实现过程中如果发生任何故障,将很难找到问题所在。 。
服务器端:
//initialize your socket
//start listening on your socket
TreeMap<YourKeyClass, YourValueClass> treeMap = new TreeMap<>();
buildMyTree(treeMap);
ObjectOutputStream oos = new ObjectOutputStream(socketToClient.getOutputStream());
oos.writeObject(treeMap);
客户端:
//initialize your socket
ObjectInputStream ios = new ObjectInputStream(socketToServer.getInputStream());
TreeMap<YourKeyClass, YourValueClass> treeMapFromSocket = ois.readObject();
您可以使用以下资源:
是的,有可能。
java.util.TreeMap实现接口java.io.Serializable。 TreeMap int的所有键和值也必须实现此接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.