gpt4 book ai didi

java - 在 Java 中发送和接收序列化对象 - Socket 编程

转载 作者:行者123 更新时间:2023-11-30 09:45:27 24 4
gpt4 key购买 nike

(我知道这可以在 RMI 中完成,但我需要使用套接字来完成,因为我发现如果使用 RMI 方法可能会有一些设置过程)

请查看 http://www.coderanch.com/t/205325/sockets/java/send-any-java-Object-through 中的简单客户端-服务器代码

在这个程序中,SimpleClient 知道 SimpleServer 发送的两个对象的顺序。

即:服务器

oos.writeObject(new testobject(1,"来自客户端的对象"));
oos.writeObject(new String("来自客户端的另一个对象"));

客户端根据接收对象的顺序进行转换。但我想避免这种性质,让客户端随时发送任何对象,这样服务器也应该能够相应地处理每个发送的对象并返回结果。

testobject to = (testobject)ois.readObject(); 
System.out.println(to.id);}
System.out.println((String)ois.readObject());

有没有一种方法可以“标记”正在发送的对象,以便可以通过服务器中的简单“if”语句来确定操作?

有没有更好的方法来使用 服务器返回的 ResultSet 而不是我的对象序列化方法?

提前致谢。

谢谢

最佳答案

readObject 将在其适当的类中返回一个对象。如果你需要一些基于它的分支逻辑,你可以使用 instanceof:

Object newObj = stream.readObject();
if (newObj instanceof testobject) {
doSomething((testobject) newObj);
} else if (newObj instanceof String) {
doSomethingWithString((String) newObj);
} // etc.

通常,不建议对从流中读取的所有对象都这样做。如果您要使用 ObjectStreams 来建立协议(protocol),您应该将其记录下来并坚持使用。这样,如果一方发送了不正确的数据,另一方会更快地捕捉到它。

但是,在协议(protocol)流中的给定点的场景中,预期客户端可能会发送几种不同类型的对象中的一种,这可能是有意义的。

关于java - 在 Java 中发送和接收序列化对象 - Socket 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com