2012-08-12 65 views
0

我做了一个简单的对象,我试图通过OOS发送,但每次尝试发送创建的类时都会抛出IOException。但是如果我试图通过它发送对象,我知道它是可序列化的,它不会抛出错误。Java ObjectOutputStream IOException

UserName userName = new UserName(); 
_out.write("Object is Made! \n"); 
serverOutput.writeObject(userName); 
serverOutput.flush(); 

这里的用户名代码:

public class UserName implements Serializable { 

private String _userName; 

public UserName(String userName) { 
    _userName = userName; 
} 

public UserName(){ 
    _userName = "John Doe"; 
} 

/** 
* @return the _userName 
*/ 
public String get_userName() { 
    return _userName; 
} 

/** 
* @param _userName the _userName to set 
*/ 
public void set_userName(String userName) { 
    _userName = userName; 
} 

} 

如果我这样做,那么它不会引发错误:

UserName userName = new UserName(); 
_out.write("Object is Made! \n"); 
serverOutput.writeObject(new String()); 
serverOutput.flush(); 

我是不是真的要实现任何方法还是我忘了什么?

+0

IOException说什么? – Vulcan 2012-08-12 00:08:55

+0

如何检查?打印StackTrace?我从一个.jar可执行文件运行这个 – 2012-08-12 00:14:33

+0

通过CMD运行,未捕获的异常堆栈跟踪将打印到系统控制台。 – Vulcan 2012-08-12 00:23:14

回答

0

接收端可能已关闭连接。也许这里还有一个例外?

+0

是的,我意识到程序在另一个人可以读取对象之前完成执行。是否有阻止线程直到它完成? – 2012-08-14 01:47:23

+0

@ReCoNciLiaTiOn你误解了我的答案。接收端可能已关闭连接,因此无法写入。解决方案是修复应用程序协议的实现,可能首先要正确定义它,以便同行在读取他们应读的所有内容之前不会关闭连接。没有'块'需要,只是正确的逻辑。 – EJP 2012-08-21 05:36:08