import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;public class MyClient {
private static final long serialVersionUID = 800120791203985L;  static Socket server; public static void main(String[] args) throws Exception {
server = new Socket(InetAddress.getLocalHost(), 8081);
ObjectOutputStream oos = new ObjectOutputStream(server
.getOutputStream());
System.out.println("start");
People p = new People();
p.setAge(25);
p.setName("sean");
oos.writeObject(p);
oos.flush(); }
}
import java.io.IOException;
import java.io.ObjectInputStream;
import java.lang.reflect.Constructor;
import java.net.ServerSocket;
import java.net.Socket;public class MyServer {
private static final long serialVersionUID = 800120791203985L; public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8081);
Socket client = server.accept();
ObjectInputStream ois = new ObjectInputStream(client.getInputStream());  //这行debugger的时候出现问题了
Object o;
try {
o = ois.readObject();
MyServer ms = new MyServer();
ms.deal(o);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//client.close();
} } public void deal(Object o) {
Class oc = o.getClass();
Constructor[] cs = oc.getConstructors();
Constructor c = cs[0];
String name = c.getName();
System.out.println("the name of the received object is :: " + name);
// c.newInstance(initargs)
}
}
另外people类就是简单的javabean
当我上面的client和server进行调试的时候(debugger)出现以下错误Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at MyServer.main(MyServer.java:14)
而我正常运行的话可以正常处理。
所以我的问题是这到底是为什么会出现这问题?

解决方案 »

  1.   

    debugger的时候
    ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
    这句出现上面reset问题
      

  2.   

    哪你的代码跑了一下...
    惊奇的发现...你没有做线程...
    既然主线程都阻塞了,你又怎么能获得客户端连接那...
    把你的Server和Client都改成Thread吧
      

  3.   

    Debug 时先启动Server 在accept()会阻塞
    在Debug启动Client做完这
            server = new Socket(InetAddress.getLocalHost(), 8081);
            ObjectOutputStream oos = new ObjectOutputStream(server
                    .getOutputStream());
    先停下
    让Server端的accept()后面的
    ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
    做完了 
    就可以让Client继续做完结束了 最后接着做Server看行不,能不能解决
      

  4.   

    确实把myyclient里面的socket关闭就调试正常了
    为什么我给server传递一个对象后需要把socket关闭呢?
    不关闭就出现上面的connection reset问题?