public void checkForCommand(DatagramPacket packet) {
String message = new String(packet.getData());
if (message.startsWith(connectionPacket)) {
extractingUserData(packet);
return;
} else
System.out.println(clientName + ": " + message);
}
private void extractingUserData(DatagramPacket packet) {
clientAdress = new String(packet.getAddress().toString());
clientPort = new Integer(packet.getPort());
String message = new String(packet.getData());
parts = message.split(" ");
clientName = parts[1];
System.out.println("User: " + clientName + clientAdress + " " + clientPort + " "
+ "successfully connected to the server!");
}
Не ясно откуда появляется такое количество пробелов в консоли. Причем если разбить строку на две примерно так:
System.out.println("User: " + clientName);
System.out.println(clientAdress + " " + clientPort + " "
+ "successfully connected to the server!");
Проблем с пробелами не возникает. Логично предположить что пробелы приходят вместе с переменной clientName. Вопрос как это исправить, ведь очевидно что имя задается без пробелов вовсе.
Проблема была в том что переменная clietName шла в конце пакета из 1024 байтов. Соответственно все "пустые" байты после тоже печатались в консоль. Решением было применить метод trim(); во время извлечения имени из пакета данных.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей