вот код сервера, подскажите как отловить логи попыток подключения?
int port = 5000;
try {
// Открыть серверный сокет (ServerSocket)
// Это специальный класс для сетевого взаимодействия с серверной стороны
ServerSocket servSocket = new ServerSocket(port);
// Входим в бесконечный цикл - ожидаем соединения
while (true) {
System.out.println("Waiting for a connection on " + port);
// Получив соединение начинаем работать с сокетом
Socket fromClientSocket = servSocket.accept();
// Работаем с потоками ввода-вывода
try (Socket localSocket = fromClientSocket;
PrintWriter pw = new PrintWriter(localSocket.getOutputStream(), true);
BufferedReader br = new BufferedReader(new InputStreamReader(localSocket.getInputStream()))) {
// Читаем сообщения от клиента до тех пор пока он не скажет "bye"
String str;
while ((str = br.readLine()) != null) {
// Печатаем сообщение
System.out.println("The message: " + str);
// Сравниваем с "bye" и если это так - выходим из цикла
if (str.equals("bye")) {
// Тоже говорим клиенту "bye" и выходим из цикла
pw.println("bye");
break;
} else {
// Посылаем клиенту ответ
str = "Server returns: " + str;
pw.println(str);
}
}} catch (IOException ex) {
ex.printStackTrace(System.out);
}
}
} catch (IOException ex) {
ex.printStackTrace(System.out);
}
Я уже понял что нужно обращаться к 10.0.2.2 (потому что 10.0.2.2 - это запрос в локальную сеть, а 127.0.0.1 запрос к самому себе) но дает ошибку failed to connect to /10.0.2.2 (port 5000) from /:: (port 58331): connect failed: ETIMEDOUT (Connection timed out). Пк выступает в роли сервера он слушает если что порт 5000 ServerSocket servSocket = new ServerSocket(5000);
Я сейчас понял что 10.0.2.2 не дает ошибки, но и ничего больше не дает. Код не выполняется дальше после Socket socket = new Socket("10.0.2.2", portNumber); Можно ли как-то вытащить ошибку?
MaxLich, Но ведь давайте прочитаем дословно как работает foreach: Для каждого элемента (допустим String s) в массиве(String[] array) делаем что-то(например выводим print(s)). Из этого определния я решил назвать интерфейс массивом, ведь сам интерфейс(Iterable) дает знать что мы имеем дело с массивом(неким объектом в котором можно производить итерацию)
Понял, спасибо.
То есть мы грубо говоря меняем метод базового класса замененяя на новый метод с таким же названием?
(если вопрос глупый, можете не отвечать)))
Денис Загаевский, Спасибо большое за ваш ответ. Немного отрицательно сначала отнесся к вашему сообщению, но я действительно ушел от SP и сделал обычным флагом. А то что если выключить приложение и заново открыть мне роли не играет, я там просто пропишу события в onPause чтоб остановить таймер и продлить. В общем, спасибо)
Денис Загаевский, Ну у меня есть только одна кнопка и запустить таймер нужно только при помощи нажатия на нее. Но она же является и кнопкой других действий. Кратко идея: отправляешь сообщения, которые удаляются через некоторое время, но время удаления сообщений должно идти с первого нажатия, ибо тогда запускается куча таймеров одновременно. У вас нет идей как это можно реализовать правильно? просто мне дали совет сделать такой себе "флаг" и сохранять его значение в SP
А как бы вы сделали такое: нужно чтобы кнопка отработала метод с таймером только один раз, а остальные разы проходила мимо выполнения этого метода, но при этом эта же кнопка делала другие действия
Vladislav Kovalev: Умею, конечно. Цель создания вопроса, получить доступный ответ простыми словами. Человек который в этом разобрался, возможно расскажет свое понимание на данном ресурсе
Спасибо, был там уже. Возможно дойдет чуть позже, но пока что не могу разобрать такие слова как "осуществлен только во время выполнения и у компилятора нет информации, чтобы проверить корректность такого вызова." или " происходит на этапе компиляции" что же там происходит. Как это выглядит в коде, чем это мне поможет в написании программы. Мне бы просто хоть в двух словах "Зачем? и как выглядит". Возможно у меня неправильные вопросы, но думаю со временем и опытом дойдет
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.