我想把一个.zip文件压缩包从MonitorAgent传到DataService ,结果确实传过去了,但是.zip无法打开 是一个破损的文件,这个问题该怎么办啊?
public class DataService {
    
    public static void main(String []args){
        try {
            ServerSocket server = new ServerSocket(60001);
            Socket client = server.accept();
            System.out.println("数据服务中心得到的客户端scoket:" + client);
            InputStream i = client.getInputStream();
            ObjectInputStream ii = new ObjectInputStream(i);
            File f =(File)ii.readObject();
            f.createNewFile();
        } catch (Exception e) {
            e.printStackTrace();
        }    
        
    }
}import java.io.File;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;public class MonitorAgent {
    public static void main(String[] args) {
        try {
            DataPackage data = new DataPackage();
            File f = new File("33.zip");
            data.setFile(f);
            Socket startsocket = new Socket("127.0.0.1", 60001);
            OutputStream o = startsocket.getOutputStream();
            ObjectOutputStream s = new ObjectOutputStream(o);
            s.writeObject(f);
            s.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解决方案 »

  1.   

    ObjectInputStream ii = new ObjectInputStream(i);
    File f =(File)ii.readObject();
    f.createNewFile();太牛了
    楼主用java写了一个笑话
      

  2.   

    File对象,不包含文件内容的吧
    仅仅是一个路径+文件名而已
      

  3.   

    如果没有猜错的话
    f.createNewFile();
    只是建立了一个大小为0的空文件
      

  4.   

    我现在有了一个新问题
    o关闭以后,server也关闭了,这是怎么回事情,我不希望server也关闭
    public class TestSocket {    public static void main(String[] args) {
            try {
                Socket server = new Socket("127.0.0.1", 60001);
                OutputStream o = server.getOutputStream();
                byte[] byteBuffer = new byte[1024];
                o.write(byteBuffer);
                o.close();
                TestLogger.log("server is closed " + server.isClosed());
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }    }}
      

  5.   

    不可能吧    关个流怎么能把server也关了
      

  6.   

    哪位知道java socket 长连接怎么建立啊?