Ich habe gerade angefangen, Java zu lernen. Ich habe zwei Projekte, die Server-Socket implementieren. Im Serverprojekt antwortet der Server basierend auf einem Vorgangsnamen, den der Client sendet. Operationen sind dir - aktuelle Verzeichnisname (String)wie mit verschiedenen Antworttyp in Server-Socket in Java
Server.java
Socket client = serverSocket.accept();
DataInputStream in = new DataInputStream(client.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
String operation = in.readUTF();
System.out.println("Performing opration : " + operation);
switch (operation) {
case "dir":
File[] lstOfFiles = folder.listFiles();
out.writeObject(lstOfFiles);
break;
case "cd":
out.writeObject(new String("Current Directory : " + currentDir));
break;
}
Nun, wie kann ich auf die Identifizierung - Serververzeichnis Dateien (File []) cd senden Client-Seite Was ist das Objekt des Typs?
Client.java
ObjectInputStream in = new ObjectInputStream(client.getInputStream());
File[] lstOfFiles = (File[]) in.readObject();
if(lstOfFiles !=null)
System.out.println("Total : " + lstOfFiles.length);
Aber diese Ausnahme Classcast wirft. Dann habe ich versucht
if ((in.readObject()).getClass() == String.class) {
System.out.println((String)in.readObject());
}
else if (in.readObject().getClass() == Object.class) {
File[] lstOfFiles = (File[]) in.readObject();
if(lstOfFiles !=null)
System.out.println("Total : " + lstOfFiles.length);
}
Dann zeigt dies EOFException. Wie kann ich das lösen? oder ein besserer Ansatz?
gelöst Aber wenn ich die CD Betrieb sende muss es zuerst, wenn Block übereinstimmen. Ich habe File.class versucht, anstatt object.class immer noch nicht funktioniert –