2017-04-24 13 views
-1

私はFTP転送の実装のためのプログラムでサーバからクライアントへのファイルのリストを送信しようとしましたが、初めて正常に動作していますが、2回目にコマンドリストファイルを送信するとエラーが発生します。ここでスレッド "main"の例外java.io.StreamCorruptedException:無効なストリームヘッダ:7371007E

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(); 
    } 
} 
+0

あなたのクレイジーフォーマットを修正しました。それをしないでください。一貫性のある正しい書式設定とインデントスタイルを使用してください。そうでなければ違反する。 [tag:socket.io]はまったく関係ありません。無差別にタグを付けないでください。 – EJP

+0

申し訳ありませんが、私は学んでいます。 – Nuthann92

+0

ここに投稿するときだけでなく、自分のコードを書いて読んでいるときにも、それはあなた自身のためだけでなく、私たちのためでもあります。正しく書式設定されていないコードを理解できないか、むしろそれを理解しようとすると無駄な労力が必要になります。 – EJP

答えて

0

あなたがソケットの生活のために同じObjectInputStreamObjectOutputStreamを使用する必要があります。

関連する問題