线程" main"中的例外情况java.io.StreamCorruptedException:无效的流标题:7371007E

时间:2017-04-24 03:17:43

标签: java sockets serialization tcp

我正在开发一个用于FTP传输实现的程序,当我尝试将服务器中的文件列表从服务器发送到客户端时,它第一次正常工作但是如果我发送命令它会丢失以下错误第二次列出文件。

Exception in thread "main" `java.io.StreamCorruptedException`: invalid stream header: 7371007E
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:808                                                                                        )
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
at transferfileClient.ListFiles(ListClient.java:142)
at transferfileClient.displayMenu(ListClient.java:206)
at ListClient.main(ListClient.java:15) 

这是我的服务器端代码:

public void Listfiles() throws Exception
{
    ArrayList<String> MyList = new ArrayList<String>();
    File folder = new File("//home//cci100//CN");
    File[] listOfFiles = folder.listFiles();
    String NameOfFiles;
    String temp;
    int ch;
    for (int i = 0; i < listOfFiles.length; i++) { 
        if(listOfFiles[i].isFile()){
            MyList.add(listOfFiles[i].getName());
        }     
    }       
    try{
        objectOutput.writeObject(MyList);
    }
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}

这是我的客户端代码:

@SuppressWarnings("unchecked")
public void ListFiles() throws Exception{
    ArrayList<String> MyListc = new ArrayList<String>();
    File f=new File("//home//cci100//CN");

    FileOutputStream fout=new FileOutputStream(f);
    objectInput = new ObjectInputStream(ClientSoc.getInputStream());
    try {
        Object object = objectInput.readObject();
        MyListc =  (ArrayList<String>) object;
        int s=MyListc.size();
        for (int i = 0; i < MyListc.size(); i++) {
            System.out.println(MyListc.get(i));
        }
    }
    catch (ClassNotFoundException e){
        e.printStackTrace(); 
    }
}

1 个答案:

答案 0 :(得分:0)

您需要在套接字的生命周期内使用相同的ObjectInputStreamObjectOutputStream