【发布时间】:2017-04-24 03:17:43
【问题描述】:
我正在开发一个用于 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();
}
}
【问题讨论】:
-
我修正了你疯狂的格式。不要那样做。请使用一致且正确的格式和缩进样式。否则难以辨认。 socket.io 与此完全无关。不要乱加标签。
-
对不起,我正在学习。
-
这不仅是为了您自己的利益,也是为了我们的利益,不仅仅是在此处发布,而是在编写然后阅读您自己的代码时。您将无法理解格式不正确的代码,或者尝试理解它需要额外的浪费精力。
标签: java sockets serialization tcp