У меня есть серверный чат и клиентские программы чата, работающие на localhost.Когда я пытаюсь подключиться к серверу, моя клиентская программа зависает на следующей строке 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;
}
Класс сообщений реализует интерфейс Serializable, поэтому он можетбыть сериализованным по сети.А вот фрагмент кода, в котором серверный запрос клиента клиента
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 просто вызывает следующий метод
private void sendMessage(Message m, Socket s) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(s.getOutputStream()));
out.writeObject(m);
out.flush();
// out.close();
}
Где ошибка?