Пишу небольшое клиент-серверное приложение с использованием сокетов. Появился вопрос. Для приема подключений со стороны клиентов на сервере формируется ServerSocket. Для удобства работы с серверной частью выделил его в отдельный поток. Но вот проблема: когда он ожидает нового подключения (serverSocket.accept()) этот поток никак нельзя прервать - он не реагирует на interrapt, т.к. цикл стоит на месте до тех пор, пока не появится новое подключение. Тем самым возникает проблема - главная нить уже отработала (я хочу завершить работу сервера), но т.к. поток с ServerSocket еще жив - программа не завершается. Вопрос по матчасти. Если я сделаю поток с сервер-сокетом демоном, при закрытии основого потока как поведет себя подключение в потоке демоне? Корректно закроется или просто прервется? Код метода run() ниже:
public void run() { //основной метод нити
try (ServerSocket serverSocket = new ServerSocket(settings.getPort())) { //создает серверный сокет
ConsoleHelper.writeMessage("SocketServer запущен");
while (true) {
Socket socket = serverSocket.accept(); //слушаем входящие запросы на подключение
new Handler(socket).start(); //при получении запроса формируем новую нить, отвечающую за работу с клиентом, и запускаем ее
continue; //после этого снова продолжаем слушать запросы
}
} catch (IOException e) { //в случае, если создать серверный сокет не удалось, либо он выкинул исключение во время работы,
ConsoleHelper.writeMessage("Произошла ошибка работы с сетью!"); //выводится сообщение в консоль
ConsoleHelper.writeMessage("============================================");
ConsoleHelper.writeMessage(e.getMessage()); //а так же информация о самом исключении
ConsoleHelper.writeMessage("============================================");
return;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать так чтоб при добавлении новых элементов в список, последний элемент, который там есть не изменялся и при нажатии на него открылось...
Есть метод, но почему то он всегда возвращает 0, а список заполняется в чем проблема?
В тестовом приложении я пытаюсь работать с RecyclerView и прокручивать recycleview items синхронноОднако во время горизонтальной прокрутки у меня появляется...
Есть сайт на битриксе, к которому подключена база данныхЧерез сайт можно заказать еду (сайт службы доставки), заказ вносится в базу