一个S/C小程序.自己的意图是:想在服务器与客户端之间进行对象传输。问题:客户端的程序就根本建立不起对象流,,这是怎么回事啊?????希望给位高手能给予详细解析,,,我在这先提前道谢了备注:本机的相关参数:XP系统、eclipse的版本:Build id: 20100218-1602
(c) Copyright Eclipse contributors and others 2000, 2009.  All rights reserved.、JDK的版本:
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)一下是我的源代码:
package lianxi0007;
import java.io.*;
import java.net.*;
public class Server 
{
private ServerSocket ss;
public Server()
{
try {
ss=new ServerSocket(2222);
Socket so=ss.accept();
ObjectInputStream ois=new ObjectInputStream(so.getInputStream());
ObjectOutputStream oos=new ObjectOutputStream(so.getOutputStream());
Object obj=ois.readObject();
oos.writeObject(obj);
so.close();
ois.close();
oos.close();
ss.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
new Server();
}
}package lianxi0007;
import java.io.*;
import java.net.*;
public class Client
{
private Socket so;
public Client()
{
try {
so=new Socket("127.0.0.1",2222);
System.out.println("创建输入流之前");//程序会停在此处??????????
ObjectInputStream ois=new ObjectInputStream(so.getInputStream());
System.out.println("创建输入流之后");
ObjectOutputStream oos=new ObjectOutputStream(so.getOutputStream());
oos.writeObject("我是字符串");
Object obj=ois.readObject();
if(obj instanceof String)
{
String s=(String)obj;
System.out.println(s);
}
so.close();
ois.close();
oos.close();
} catch (Exception e) {
e.printStackTrace();

}
public static void main(String[] args)
{
new Client();
}
}

解决方案 »

  1.   

    把服务器Socket代码直接放Main方法并确定它先运行
      

  2.   

    根据你的意思,应该把Server类中的这一句删除掉:
    ObjectOutputStream oos=new ObjectOutputStream(so.getOutputStream());
    Client类中的这一句删除掉:
    ObjectInputStream ois=new ObjectInputStream(so.getInputStream());
    试一下吧。反正就是你的获得流的那几句代码的问题。
    祝好运。