繁体   English   中英

通过套接字传递TreeMap对象(从服务器到客户端)

[英]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其他对象的递归引用,在这种情况下,您必须在自己的writeObjectreadObject实现上进行工作以进行序列化。

因此,进行读取和写入检查非常重要,以确保一切都按照您的结构运行。

第三步:进行套接字编程

一旦确定序列化可以正常进行,请转到套接字编程。 在移至套接字之前,请确保序列化工作正常,这一点非常重要,因为如果您错过了序列化的要点,那么在套接字实现过程中如果发生任何故障,将很难找到问题所在。 。

服务器端:

//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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM