jjzjj

readObject

全部标签

java - ObjectInputStream.readObject() 断开连接时不抛出异常

我在TCP连接上使用ObjectStream将数据从客户端发送到服务器。有时,客户端在服务器仍在等待新数据时终止。在这些情况下,readObject()一直处于阻塞状态,没有抛出异常,我的计算就停止了。如何确定ObjectStream是否已断开连接或仅在等待更多数据?由于通信之间的长时间延迟,使用超时很困难。 最佳答案 唯一安全的方法是使用超时。我怀疑您在检测断开连接时看到的长时间延迟是由于您拥有的网络的性质造成的。如果死连接的计算已经停止,这真的是个问题吗?这可能会在短时间内浪费资源,但您应该在几分钟内检测到故障并清理资源。

java - 对象输入流 readObject() : ClassNotFoundException

在客户端和服务器类中,我都有一个完全相同的内部类,称为Data。此数据对象使用以下方式从服务器发送:ObjectOutputStreamoutput=newObjectOutputStream(socket.getOutputStream());output.writeObject(d);(其中d是数据对象)此对象在客户端接收并转换为数据对象:ObjectInputStreaminput=newObjectInputStream(socket.getInputStream());ObjectreceiveObject=input.readObject();if(receiveObjec

java - 如何防止 InputStream.readObject() 抛出 EOFException?

我序列化一个对象并将其作为文件保存在我的硬盘上。当我阅读它时,它只会在某些情况下抛出EOFException.经过几个小时的调试后,我找不到问题。这是我的代码:publicvoidserialize(MyClassmyClass,Stringpath){FileOutputStreamfoStream=null;ObjectOutputStreamooStream=null;try{Filefile=newFile(path);if(!file.exists()){file.createNewFile();}foStream=newFileOutputStream(file);ooSt

java - 如何在不获取 java.io.StreamCorruptedException : invalid type code: AC? 的情况下附加到 ObjectInputStream

这个问题在这里已经有了答案:StreamCorruptedException:invalidtypecode:AC(1个回答)关闭6年前。我正在尝试从文件中读取一些对象。该代码在第一次迭代时运行良好,在第二次迭代时它给出了StreamCorruptedException。这是我的代码,privateArrayListcheques=null;ObjectInputStreamois=null;try{cheques=newArrayList(4);ois=newObjectInputStream(newFileInputStream("src\\easycheque\\data\\Te

java - 序列化 - readObject writeObject 覆盖

编写完下面的代码后,我现在必须使用StudentData中的自定义readObject()和writeObject()覆盖方法来读取和写入对象的变量。无需使用defaultWriteObject或defaultReadObject方法来执行此操作。问题是我不完全理解被要求做什么。我已阅读UsesofreadObject/writeObjectinSerialization但我无法理解它。有人能指出我正确的方向吗?我的代码:importjava.io.*;//importinginput-outputfilesclassStudentimplementsjava.io.Serializa

java - 序列化 - readObject writeObject 覆盖

编写完下面的代码后,我现在必须使用StudentData中的自定义readObject()和writeObject()覆盖方法来读取和写入对象的变量。无需使用defaultWriteObject或defaultReadObject方法来执行此操作。问题是我不完全理解被要求做什么。我已阅读UsesofreadObject/writeObjectinSerialization但我无法理解它。有人能指出我正确的方向吗?我的代码:importjava.io.*;//importinginput-outputfilesclassStudentimplementsjava.io.Serializa

java - 为什么 readObject 和 writeObject 是私有(private)的,为什么我要显式地编写 transient 变量?

我正在阅读EffectiveJava中的序列化章节。谁调用了readObject()和writeObject()?为什么将这些方法声明为私有(private)?以下是书中的一段代码//StringListwithareasonablecustomserializedformpublicfinalclassStringListimplementsSerializable{privatetransientintsize=0;privatetransientEntryhead=null;//OthercodeprivatevoidwriteObject(ObjectOutputStreams

java - 为什么 readObject 和 writeObject 是私有(private)的,为什么我要显式地编写 transient 变量?

我正在阅读EffectiveJava中的序列化章节。谁调用了readObject()和writeObject()?为什么将这些方法声明为私有(private)?以下是书中的一段代码//StringListwithareasonablecustomserializedformpublicfinalclassStringListimplementsSerializable{privatetransientintsize=0;privatetransientEntryhead=null;//OthercodeprivatevoidwriteObject(ObjectOutputStreams

java - 为什么我每次调用 readObject 时 Java 的对象流都返回相同的对象?

请原谅伪代码-我的无线网络已关闭,目前我无法将代码从离线计算机复制到StackExchange。我有两个java应用程序,通过java.net.*套接字连接。我正在尝试通过对象输入/输出流将“消息”对象从一个对象传递到另一个对象。这是我正在做的:ClassMessageimplementsSerializable{StringtextintdatapublicMessage(Stringtxt,intdat){this.text=txt;this.data=dat;}stringtoString(){returntext+""+data;}}服务器:服务器有一个名为发件箱的队列for(

带有readObject的Java神秘EOF异常

以下代码产生一个EOFException。这是为什么?publicstaticInforeadInfoDataFromFile(Contextcontext){InfoInfoData=null;FileInputStreamfis=null;ObjectInputStreamois=null;Objectobject=null;if(context.getFileStreamPath("InfoFile.dat").exists()){try{fis=context.openFileInput("InfoFile.dat");ois=newObjectInputStream(fis)