我剛開始學習java。我有兩個實現服務器套接字的項目。在服務器項目中,服務器根據客戶端發送的操作名稱進行響應。 操作是 DIR - 發送服務器目錄中的文件(文件[]) CD - 當前目錄名(字符串)如何在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;
}
現在我怎麼能確定的客戶端是什麼類型的對象?
Client.java
ObjectInputStream in = new ObjectInputStream(client.getInputStream());
File[] lstOfFiles = (File[]) in.readObject();
if(lstOfFiles !=null)
System.out.println("Total : " + lstOfFiles.length);
但這是拋出異常ClassCastException異常。然後我試着
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);
}
然後這顯示EOFException。我該如何解決這個問題?或者更好的方法?
解決,但如果我發送CD操作必須首先如果塊匹配。我曾嘗試File.class而不是Object.class仍然無法正常工作 –