Другие языки программирования и технологии
JAVA - Server - Socket как обнаружить разрыв соединения.. Метод какой-нить есть?
Есть сокет и клиент. Между ними идет передача данных. Интернет отключается, данные передаваться больше не могут.. Возможно ли какой-то функцией это засечь, кроме как периодически отсылать и принимать левые пакеты, пока в этой передаче не будет сбоя? Пробовал socket.isConnected(), но как я понял он показывает только был ли подключен единожды, а не подключен ли сейчас import java.net.*; import java.io.*; public class Client { public static void main(String[] ar) { int serverPort = 1111; String address = "5.251.155.121"; try { InetAddress ipAddress = InetAddress.getByName(address); System.out.println("Подключаюсь.."); Socket socket = new Socket(ipAddress, serverPort); System.out.println("Успешно."); } catch (Exception x) { System.out.println("Ошибка."); } ... socket.close(); } import java.net.*; import java.io.*; public class Server { public static void main(String[] ar) throws IOException { int port = 1111; ServerSocket ss = new ServerSocket(Integer.valueOf("1111")); Socket socket = ss.accept(); ... socket.close(); ss.close(); } }
Если бы я сейчас не прибывал в блаженном утреннем состоянии, то посоветовал бы тебе убиться об стену.
Простой вопрос. Никогда не интересовался, почему когда пишешь такие закорючки как ss.accept(); или new ServerSocket(Integer.valueOf("1111")) глупый эклипс/нетбинс/джавак (в консольке для "реальных" пацанов) выводит какие-то глупые ошибки и предлагает их исправить добавлением к описанию функции строчки throws IOException?
Дело в том, что добрые разработчики Джавы решили каждый раз тыкать носом разработчиков-балбесов в то, что функция может вызывать исключения. А разработчики-балбесы это не ценят и обламывают весь феншуй.
Короче, крато.
1) То, что действительно было важно в устройстве сервера, ты замазал ...Каким-то образом ты взаимодействуешь с сокетом ss. Так вот, функция чтения, в случае ошибки вызывает исключение, какое конкретно, зависит от функции. За ...не видно. Если это BufferedReader, то это будет IOException, если какой-нибудь Scanner, то, соответственно NoSuchElementException и т. д. , в JavaDoc все более или менее подробно описано.
Т. е. у тебя примерно так должно быть
BufferedReader breader = new BufferedReader(new InputStreamReader(ss.getInputStream()));
try {
System.out.println(breader.readLine());
} catch (IOException e) {
System.err.println("Тут-то, при незапланированном обрыве, и должно вылететь! \n");
e.printStackTrace();
return;
}
2) Почитай про механизм исключений. Там не много и не сложно. Уж если ты это не осилишь, то дальше VBA тебе соваться не стоит.
Простой вопрос. Никогда не интересовался, почему когда пишешь такие закорючки как ss.accept(); или new ServerSocket(Integer.valueOf("1111")) глупый эклипс/нетбинс/джавак (в консольке для "реальных" пацанов) выводит какие-то глупые ошибки и предлагает их исправить добавлением к описанию функции строчки throws IOException?
Дело в том, что добрые разработчики Джавы решили каждый раз тыкать носом разработчиков-балбесов в то, что функция может вызывать исключения. А разработчики-балбесы это не ценят и обламывают весь феншуй.
Короче, крато.
1) То, что действительно было важно в устройстве сервера, ты замазал ...Каким-то образом ты взаимодействуешь с сокетом ss. Так вот, функция чтения, в случае ошибки вызывает исключение, какое конкретно, зависит от функции. За ...не видно. Если это BufferedReader, то это будет IOException, если какой-нибудь Scanner, то, соответственно NoSuchElementException и т. д. , в JavaDoc все более или менее подробно описано.
Т. е. у тебя примерно так должно быть
BufferedReader breader = new BufferedReader(new InputStreamReader(ss.getInputStream()));
try {
System.out.println(breader.readLine());
} catch (IOException e) {
System.err.println("Тут-то, при незапланированном обрыве, и должно вылететь! \n");
e.printStackTrace();
return;
}
2) Почитай про механизм исключений. Там не много и не сложно. Уж если ты это не осилишь, то дальше VBA тебе соваться не стоит.
Похожие вопросы
- Скажите, а сервлеты Java и JSP (Java Server Pages) - это одно и то же?
- Новичку по java трудно уяснить значение терминов класс, объект, метод, конструктор и тд -->
- Java, получение названий методов и вызов методов по имени
- Что конкретно пишут на языке Java? Над чем работают ?
- Проблема с Java
- Java для серверных приложений !!!
- Можете привести 5ть готовых примеров-решений, выполненных на JAVA ?
- Хочу стать Java программистом, для этого нужно знать JAVA)))
- Закончил институт на программиста. Куда податься с таким дипломом? Кем лучше устроиться, 1С или Java?
- помогите с java
У меня же висит огромная прога, которая обменивается пакетами с другим компом в сети. Я не могу впихнуть в неё буферридер, ибо могу принять или отослать не то что мне нужно принимать или отсылать.
Потому и спросил, можно ли это сделать БЕЗ принудительного пинга, написанного вручную, а как-то встроено..
И это же надо было....Как по мне ВБА сложнее джавы Оо. По крайней мере в джаве мне комфортнее на много..