java.io.EOFException这是个什么异常应该怎么解决?

cailineng 2012-09-19 08:09:24
第一个类
public functionserver(int port)
{
this.port =port;
try{
ss = new ServerSocket(port);
System.out.println("服务器套接字已经创建成功");
//收到信息后处理
while(true){
Socket s = ss.accept();
ObjectInputStream ois = new ObjectInputStream (s.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
User come = (User)ois.readObject();
if( come.getMark().equals("denglu"))
{
Login end = new Login(come.getName(),come.getPass());
System.out.println("登录");
boolean b = end.judgeLogin(); //b是一个标记判断密码正不正确
message ms = new message();
if(b == true) //密码正确返回类型一并且创建通信
{
ms.setMesstype(1);
oos.writeObject(ms);
chatfunction chat = new chatfunction(s);

}

第二个类
package qq.server;
import java.net.*;
import java.io.*;
import qq.common.*;
public class chatfunction implements Runnable{

private Socket s;

public chatfunction(Socket s)
{
this.s = s;
Thread t = new Thread (chatfunction.this);
t.start();
}

@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
try {
ObjectInputStream chatois = new ObjectInputStream(s.getInputStream()); message ms = (message)chatois.readObject();
System.out.println("发送人"+ms.getSender()+"收到人"+ms.getGetter()+"消息内容"+ms.getCont());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();


}
}
}
}
红色那行出错了
报出的错误

java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at qq.server.chatfunction.run(chatfunction.java:22)
at java.lang.Thread.run(Thread.java:619)

请高人指点 如果有需要的话可以家我QQ329956247我可以给他源代码改,改对了我马上给分谢谢。
...全文
202743 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny冰青 2015-03-14
  • 打赏
  • 举报
回复 1
楼主怎么解决的啊
IndulgingInIT 2014-11-19
  • 打赏
  • 举报
回复
引用 6 楼 samkeeintech 的回复:
嗯,这个是因为阻塞引起的,因为server的input.read读不到东西就会阻塞,当你关掉client的时候,server就知道没有东西进来了,所以就报了个异常,其实这个是正常的,只是告诉你,该把socket关闭一下,还有input也关闭一下。
这是正解!
tourism5 2014-11-03
  • 打赏
  • 举报
回复
请问楼主最后怎么解决的
滴水成冰- 2014-09-04
  • 打赏
  • 举报
回复
是不是url有空格引起的
经年JN 2014-08-12
  • 打赏
  • 举报
回复
最后怎么解决的呢
yuhouqingchen_2648 2014-06-06
  • 打赏
  • 举报
回复
引用 6 楼 samkeeintech 的回复:
嗯,这个是因为阻塞引起的,因为server的input.read读不到东西就会阻塞,当你关掉client的时候,server就知道没有东西进来了,所以就报了个异常,其实这个是正常的,只是告诉你,该把socket关闭一下,还有input也关闭一下。
原来不能看等级高低和回答质量的好坏挂钩啊,虽然是一个三角,但是这个回答是正确的
moyuan123 2013-08-26
  • 打赏
  • 举报
回复
求楼主分享怎么解决的!!!
samkeelover 2013-01-17
  • 打赏
  • 举报
回复
嗯,这个是因为阻塞引起的,因为server的input.read读不到东西就会阻塞,当你关掉client的时候,server就知道没有东西进来了,所以就报了个异常,其实这个是正常的,只是告诉你,该把socket关闭一下,还有input也关闭一下。
cailineng 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你是怎么调用 chatfunction 这个类的?
贴下代码, 你不是实例化的时候没有给参数吧。
[/Quote]给了参数了啊
cailineng 2012-09-19
  • 打赏
  • 举报
回复
第一个类里面已经有调用 chatfunction的代码了
江湖啊江湖 2012-09-19
  • 打赏
  • 举报
回复
你是怎么调用 chatfunction 这个类的?
贴下代码, 你不是实例化的时候没有给参数吧。
a234152738 2012-09-19
  • 打赏
  • 举报
回复
end of file?
LogicTeamLeader 2012-09-19
  • 打赏
  • 举报
回复
EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。
看你的代码,估计是socket没有正确创建,建议调用之前先检查socket的状态,状态正确再调用getInputStream。好久没有用socket,记得不清楚了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧