Я работаю над java службой сообщений (в стиле Twitter) в cmd.
У меня есть клиент сообщений, в котором я фиксирую команду пользователя / аргумент.
Первый аргумент и команда для Примером может быть «login pete», и это сработало бы.
Однако после ввода «open mike» для открытия канала Майка я получаю исключение несоответствия ввода.
Код
public class MessageClient {
public static void main(String[] args) throws IOException {
/*
* if (args.length != 2) { System.err.println(
* "Usage: java EchoClient <host name> <port number>"); System.exit(1); }
*/
/*
* String hostName = args[0]; int portNumber = Integer.parseInt(args[1]);
*/
String hostName = "localhost";
int portNumber = 12345;
try (
Socket messageSocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(messageSocket.getOutputStream(), true);
Scanner in = new Scanner(messageSocket.getInputStream());
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in))
) {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
// Read number of response lines (and skip newline character).
int n = in.nextInt(); // Input mismatch happens here
in.nextLine();
// Read and print each response line.
for (int i = 0; i < n; i++)
System.out.println(in.nextLine());
}
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + hostName);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " +
hostName);
System.exit(1);
}
finally {
System.exit(1);
}
}
}