我有一個運行在本地主機上的服務器聊天和客戶端聊天程序。當我嘗試連接到服務器我的客戶端程序的下一行凍結in = new ObjectInputStream(socket.getInputStream());
這裏是一段代碼,我嘗試連接到聊天客戶端程序問題
Socket socket = new Socket(host, port);
try {
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
Message m = new Message(null, nick, Message.Type.REGISTER);
out.writeObject(m);
out.flush();
} catch (IOException ex) {
socket.close();
throw ex;
}
Message類實現Serializable接口的服務器,因此它可以被序列化過網絡。這裏是一段代碼,其中服務器hadle客戶端請求
try {
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
Message m = (Message) in.readObject();
switch (m.getMessageType()) {
case REGISTER:
registerUser(m);
break;
case CHATMESSAGE:
sendMessageToAll(m);
break;
case UNREGISTER:
unregisterUser(m);
break;
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(Chatserver.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Chatserver.class.getName()).log(Level.SEVERE, null, ex);
}
方法registerUser,unregisterUser,sendMessageToAll只需調用next方法
private void sendMessage(Message m, Socket s) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(s.getOutputStream()));
out.writeObject(m);
out.flush();
// out.close();
}
哪裏錯了嗎?
上面示例中的'client`是什麼? – 2011-02-01 19:56:29
它是指定客戶端 – maks 2011-02-01 19:57:53