java.io.EOFException这是个什么异常应该怎么解决?
第一个类
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我可以给他源代码改,改对了我马上给分谢谢。
------解决方案--------------------EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。
看你的代码,估计是socket没有正确创建,建议调用之前先检查socket的状态,状态正确再调用getInputStream。好久没有用socket,记得不清楚了。
------解决方案--------------------end of file?
------解决方案--------------------