這是我的服務器類,它讓客戶端彼此聊天,但它會返回這條線的空指針異常:while (!(line = in.readLine()).equalsIgnoreCase("/quit"))
你能幫我嗎?謝謝。爲什麼它返回空指針異常(服務器端)
我ChatHandler類:
final static Vector handlers = new Vector(10);
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ChatHandler(Socket socket) throws IOException {
this.socket = socket;
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(
new OutputStreamWriter(socket.getOutputStream()));
}
@Override
public void run() {
String line;
synchronized (handlers) {
handlers.addElement(this);
// add() not found in Vector class
}
try {
while (!(line = in.readLine()).equalsIgnoreCase("/quit")) {
for (int i = 0; i < handlers.size(); i++) {
synchronized (handlers) {
ChatHandler handler =
(ChatHandler) handlers.elementAt(i);
handler.out.println(line + "\r");
handler.out.flush();
}
}
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
synchronized (handlers) {
handlers.removeElement(this);
}
}
}
}
客戶端類的一部分:
String teXt = MainClient.getText();
os.println(teXt);
os.flush();
try {
String line = is.readLine();
setFromServertext("Text recieved:"+line+"\n");
is.close();
is.close();
c.close();
} catch (IOException ex) {
Logger.getLogger(MainClient.class.getName()).log(Level.SEVERE, null, ex);
}
您發佈關於'NullPointerException'的一些問題之前,你被告知如何在將來以聰明的方式提出問題,並且你也被相當高度地解釋瞭如何調試和初始化根本原因。你有沒有從中學到什麼?例如,你看* in.readLine()可能會返回null,這樣'.equalsIgnoreCase()'根本不起作用嗎? – BalusC 2010-01-18 18:29:28